【问题标题】:ShellExecute fails: ERROR_FILE_NOT_FOUNDShellExecute 失败:ERROR_FILE_NOT_FOUND
【发布时间】: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


【解决方案1】:

解决方案是使用绝对路径而不是相对路径。

【讨论】:

  • 非常感谢你们。我一直在寻找错误大约一周。我想知道解决方案怎么会那么容易。 :) 但是为什么它一直在 Win7 而不是 WinXP 上运行呢?
猜你喜欢
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 2010-11-14
  • 2012-10-05
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
相关资源
最近更新 更多