如何知道调用了那些api,让这个程序顺利运行;

时间:2022-10-07 00:10:38
我拿到一个程序, 只能在98下运行,在2000下报错, 我想应该是缺少一些API吧, 但装了VC++6.0之后在2000下还是用不了, 有什么方法吗?
(不会让我把98的一些DLL全copy到2000下吧?本程序没有原代码了)

16 个解决方案

#1


用exescope打开,察看import,就是你所需。

#2


万一有GetProcAddress动态装载的,就不行了

#3


请问 如果你们碰到一个程序只能在98下运行, 而不能在2000下运行, 如何解决;
本程序没有源代码了

#4


kernel32.dll
user32.dll gdi32.dll comdlg32.dll winspool.drv shell32.dll comctl32.dll oledlg.dll ole32.dll olepro32.dll oleaut32.dll 
我用eXeScope 打开看了, 导入部分就这些东西, 但我查了一下我的2000下有这些文件啊; 
请问高手们还有什么解决方法吗?

#5


98下有的2000没有的我只知道RegisterServiceProcess

#6


哪有 其他 方法让这个程序运行吗?因为这是一个主程序, 分别调用3个子程序(都是exe文件);
现在是3个子程序能单独运行,主程序却不能运行; 感觉很奇怪;

#7


报的是什么错呀?

#8


就是报地址读出错!!

#9


2000下有个兼容性调整工具的,叫什么COMP什么的,具体名字既不起来了。汗

#10


那不是缺API,可能是程序本来就有点BUG,2000对程序检查严格了

#11


---------------------------
应用程序发生异常 unknown software exception (0xc0000096),位置为 0x0041941e。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定   取消   
---------------------------
-------------------------------------------------------------------------------
报告错误信息就是上面的, 还有那位能给点建议吗,来者有分;

#12


98下和2000下dll版本不同。同一函数调用方法、参数值范围可能会不同。

#13


我把那几个dll都考过来了, 还是相同的error; 大家是不是就肯定是dll的版本问题了, 如果这样的化,我就查这几个dll是否调用了其他dll, 然后把他们也一并考过来

#14


在2000里把程序的运行兼容模式设为win98试试,实在不行建议用跟踪调试工具找找是在哪个DLL空间出错

#15


Waiting4you(毛毛)  你好, 非常感谢你的帮助;
我在2003下设为98兼容模式就行了,但2000下好像没有设置选项吧;
还是想找到根本的解决方法;
thanks again!

#16


2000好象是装了SP3以后就有了吧?我记得是有的,关于调试工具我建议用TRW2000或SOFTICE,不用懂汇编,一步一步往下走,看到哪里非法操作了,记下当时的DLL空间(TRW2000是在程序下方)

#1


用exescope打开,察看import,就是你所需。

#2


万一有GetProcAddress动态装载的,就不行了

#3


请问 如果你们碰到一个程序只能在98下运行, 而不能在2000下运行, 如何解决;
本程序没有源代码了

#4


kernel32.dll
user32.dll gdi32.dll comdlg32.dll winspool.drv shell32.dll comctl32.dll oledlg.dll ole32.dll olepro32.dll oleaut32.dll 
我用eXeScope 打开看了, 导入部分就这些东西, 但我查了一下我的2000下有这些文件啊; 
请问高手们还有什么解决方法吗?

#5


98下有的2000没有的我只知道RegisterServiceProcess

#6


哪有 其他 方法让这个程序运行吗?因为这是一个主程序, 分别调用3个子程序(都是exe文件);
现在是3个子程序能单独运行,主程序却不能运行; 感觉很奇怪;

#7


报的是什么错呀?

#8


就是报地址读出错!!

#9


2000下有个兼容性调整工具的,叫什么COMP什么的,具体名字既不起来了。汗

#10


那不是缺API,可能是程序本来就有点BUG,2000对程序检查严格了

#11


---------------------------
应用程序发生异常 unknown software exception (0xc0000096),位置为 0x0041941e。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定   取消   
---------------------------
-------------------------------------------------------------------------------
报告错误信息就是上面的, 还有那位能给点建议吗,来者有分;

#12


98下和2000下dll版本不同。同一函数调用方法、参数值范围可能会不同。

#13


我把那几个dll都考过来了, 还是相同的error; 大家是不是就肯定是dll的版本问题了, 如果这样的化,我就查这几个dll是否调用了其他dll, 然后把他们也一并考过来

#14


在2000里把程序的运行兼容模式设为win98试试,实在不行建议用跟踪调试工具找找是在哪个DLL空间出错

#15


Waiting4you(毛毛)  你好, 非常感谢你的帮助;
我在2003下设为98兼容模式就行了,但2000下好像没有设置选项吧;
还是想找到根本的解决方法;
thanks again!

#16


2000好象是装了SP3以后就有了吧?我记得是有的,关于调试工具我建议用TRW2000或SOFTICE,不用懂汇编,一步一步往下走,看到哪里非法操作了,记下当时的DLL空间(TRW2000是在程序下方)