我试图启动一个程序,作为另一个用户在Windows 7系统上使用Win32函数CreateProcessWithLogon启动另一个程序,但它返回错误120,代表函数不支持。CreateProcessWithLogon返回函数不支持
如果我在命令中运行该程序,它可以正常工作。如果我另一方面用ShellExecute启动程序,那么我得到错误。
命令行 - >启动程序A - >程序A执行CreateProcessWithLogon。 OK 32位程序 - >启动程序A - >程序A执行CreateProcessWithLogn。 ERROR
if (!CreateProcessWithLogonW(L"username", L"domain", L"password",
LOGON_NETCREDENTIALS_ONLY, L"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe", L"iexplore",
NULL, NULL, NULL,
&si, &pi))
DisplayError(L"CreateProcessWithLogonW");
感谢您的信息,但LOGON_WITH_PROFILE产生同样的错误。 – Karlth
@Karlth我当然测试了自己的代码(om win7),它运行良好。如果完全运行你的代码片段 - 我得到了另一个错误 - “ERROR_INVALID_LOGON_TYPE”,如果删除'LOGON_NETCREDENTIALS_ONLY'或将其与L“@”一起用作用户名,则该错误消失。如果你有另一个错误 - 你需要调试。甚至在你的过程中可能是错误的,但更快的是你需要在svchost.exe -k netsvcs进程中设置bp,在seclogon.SlrCreateProcessWithLogon中进行调试并调试它,或者http://i.imgur.com/euZrIio.png或如果'LsaLogonUser'返回错误,则可能会调试lsass.exe – RbMm