【发布时间】:2023-03-06 23:19:01
【问题描述】:
我正在尝试使用我自己的具有管理员权限的启动器启动我的应用程序。启动器可以在我的 64Bit Win7 上运行,但不能在我的 32Bit WinXP 计算机上运行。 我使用的代码是这样的:
wstring fullAppPath = "myapp.exe";
ShellExecuteW(NULL,
L"runas", //admin rights
fullAppPath.c_str(),
NULL, //startup params
NULL, //default dir
SW_SHOWNORMAL
);
我在 Qt IDE 中使用 MSVC 2010 32Bit 编译器,并且启动器应用程序和主应用程序位于同一目录中,而不是 C:\Windows\System32。 在我的 WinXP 计算机上,每当我启动启动器时,我都会收到 ERROR_FILE_NOT_FOUND 错误。 (值 2) 我该如何解决这个问题?
【问题讨论】:
-
您是否尝试过转义反斜杠,即
"C:\\myapp.exe"? -
我当然试过了。确切地说,我使用了相对路径。
-
这听起来很明显,但 myapp.exe 是 64 位应用程序吗?此外,如果您将 myapp.exe 替换为例如,它是否有效?记事本.exe?
-
使用相对路径绝不是错误。需要使用 SetCurrentDirectory(),以便您知道 Windows 开始查找的位置。
标签: c++ qt winapi shellexecute admin-rights