首页
社区
课程
招聘
请问一个调用WinExec函数的问题
发表于: 2006-6-17 17:53 8317

请问一个调用WinExec函数的问题

2006-6-17 17:53
8317
我在OD中加了一个“工具”按钮,然后调用WinExec函数来打开常用的工具。出现了这样一个问题:如果先直接运行OD,然后加载被调试程序,就可以正常运行“工具”菜单中的工具,也就是能正常调用WinExec函数。但如果用“发送到”直接加载被调试程序后再点击“工具”菜单中的工具,就不能运行“工具”菜单中的工具,调用WinExec函数失败,返回值为2。请问这是什么原因造成的?(传入的两个参数都正确。)

PUSH 1
PUSH ECX //"..\Hex-Char\Hex-Char.EXE"
CALL DWORD PTR DS:[kernel32.WinExec]

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
没试过,不清楚,试试用ShellExecute函数。
2006-6-17 18:25
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
3
按理winexec函数调用程序最简单了,不应该会出错的。
2006-6-17 18:35
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
//这个是你的错误代码解释:
#define ERROR_FILE_NOT_FOUND             2L

//
// MessageId: ERROR_PATH_NOT_FOUND
//
// MessageText:
//
//  The system cannot find the path specified.
//
你用的是相对路径吧?试试用绝对路径。如果还不行,那可能只有调试一下才能知道错误了。
2006-6-17 18:55
0
雪    币: 214
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
由于你使用的是相对路径,那么应该是GetCurrentDirectory的问题,GetCurrentDirectory是一个不安全的函数,某些情况下它返回的路径不一定是当前程序的路径。

解决方法是不要使用相对路径。。你可以用。
GetModuleFileName和PathRemoveFileSpec代替GetCurrentDirectory获取当前目录,然后再进一步拼接完整路径。

以上纯熟猜想。。欢迎尝试。。。
2006-6-17 21:21
0
雪    币: 214
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
由于你使用的是相对路径,那么应该是GetCurrentDirectory的问题,GetCurrentDirectory是一个不安全的函数,某些情况下它返回的路径不一定是当前程序的路径。

解决方法是不要使用相对路径。。你可以用。
GetModuleFileName和PathRemoveFileSpec代替GetCurrentDirectory获取当前目录,然后再进一步拼接完整路径。

以上纯熟猜想。。欢迎尝试。。。
2006-6-17 21:27
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
7
谢谢各位指教!
2006-6-18 20:20
0
游客
登录 | 注册 方可回帖
返回
//