繁体   English   中英

Windows 7 64位版本中的CreateProcess失败,错误代码为“ 740”

[英]CreateProcess failed with error code '740' in Windows7 64bit

我在Windows 7 64位平台上使用VS2005。 我的一个应用程序正在尝试使用CreateProcess API创建新流程。 在创建进程时,API返回错误0。我使用GetLastError()检查了错误代码,得到740请求的操作需要Elevation 尝试创建新进程的应用程序具有管理权限。

我使用以下代码创建过程:

// Create the process using modified stratup info
int nRetVal = CreateProcess( (LPSTR)strFullPath.c_str(),
                             (LPSTR)strCmdLine.c_str(),
                             0, 0, FALSE, 0 , 0,
                             (LPSTR)strWorkingDir.c_str(),
                             //NULL,
                             &StartupInfo, &ProcInfo );

如何在不关闭UAC的情况下从应用程序启动新流程?

在构建父应用程序时,我收到以下警告:

App.manifest:清单创作警告81010002:名称空间“ urn:schemas-microsoft-com:asm.v2”中的无法识别的元素“ requestedPrivileges”。

尼克松

尝试使用ShellExecute()函数代替CreateProcess()

更新:

  • CreateProcess()创建具有相同权限的子进程,这是最底层的API
  • ShellExecute/Ex()将进程创建委托给外壳程序(外壳程序可以检测应用程序是否需要特权)。 如果清单文件允许以非管理员身份运行应用程序,则传递lpOperation=L"runas"手动将其提升
  • _wsystem()创建一个新的cmd.exe /c app.exe进程(我想是通过CreateProcess ),从而将进程创建委托给命令提示符

所犯的错误描述了该问题: 请求的操作需要标高 因此,您必须先开始:

  • 您确定您的父应用程序具有完整的管理权限吗?
  • 启动时是否要求加高?

由于在构建警告时会收到警告,因此您必须具有无效的清单。 UAC清单中没有requestedPrivileges元素,而是requestedExecutionLevel

<requestedExecutionLevel
    level="asInvoker|highestAvailable|requireAdministrator"
    uiAccess="true|false"
/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM