我試圖啓動一個程序,作爲另一個用戶在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