CreateProcess失败,Windows7 64位中的错误代码为“740”

时间:2012-11-07 11:09:34

标签: c++ windows-7 visual-studio-2005 uac

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

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

// 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”。

此致 尼克松

1 个答案:

答案 0 :(得分:2)

您所遇到的错误描述了此问题:请求的操作需要提升。所以你必须从它开始:

  • 您确定您的父应用程序具有完整的管理权限吗?
  • 启动它时是否请求提升?

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

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