我有一個CreateProcessWithTokenW調用失敗,拒絕訪問。任何想法如何調試?爲什麼CreateProcessWithTokenW失敗,ERROR_ACCESS_DENIED
到CreateProcessWithTokenW的通話是在這裏:https://github.com/fschwiet/PShochu/blob/master/PShochu/PInvoke/NetWrappers/ProcessUtil.cs
現在我使用一個訪問令牌當前進程,最終我將使用一個令牌從另一個用戶。現在,我使用https://github.com/fschwiet/PShochu/blob/master/PShochu/PInvoke/NetWrappers/AccessToken.cs來獲取訪問令牌。
如果您想調試,請拉下源代碼並運行build_and_test.ps1。錯誤堆棧:
1) Test Error : PShochu.Tests.can_run_remote_interactive_tasks, given a psake script which writes the current process id to output, when that script is invoked interactively, then the script succeeds
System.ComponentModel.Win32Exception : Access is denied
at PShochu.PInvoke.NetWrappers.ProcessUtil.CreateProcessWithToken(IntPtr userPrincipalToken, String applicationName,
String applicationCommand, Boolean dontCreateWindow, Boolean createWithProfile, StreamReader& consoleOutput, StreamReader& errorOutput) in c:\src\PShochu\PShochu\PInvoke\NetWrappers\ProcessUtil.cs:line 52
at PShochu.ProcessHandling.RunNoninteractiveConsoleProcessForStreams2(String command, String commandArguments, String& newLine) in c:\src\PShochu\PShochu\ProcessHandling.cs:line 36
at PShochu.ProcessHandling.RunNoninteractiveConsoleProcess(String command, String commandArguments) in c:\src\PShochu\PShochu\ProcessHandling.cs:line 20
at PShochu.Tests.can_run_remote_interactive_tasks.<>c__DisplayClass16.<>c__DisplayClass18.<Specify>b__2() in c:\src\PShochu\PShochu.Tests\can_run_remote_interactive_tasks.cs:line 27
at NJasmine.Core.Execution.DescribeState.<>c__DisplayClass7`1.<visitBeforeEach>b__3() in c:\src\NJasmine\NJasmine\Core\Execution\DescribeState.cs:line 62
後來更新:我在一些文檔所需要的額外特權(http://msdn.microsoft.com/en-us/library/aa374905%28v=vs.85%29.aspx)看到。我遇到了麻煩測試來驗證我的這些個別證券(它們在secpol.msc預先設定重啓)
SE_ASSIGNPRIMARYTOKEN_NAME "Replace a process level token"
SE_TCB_NAME "Act as part of the operatin system"
SE_INCREASE_QUOTA_NAME "Adjust memory quotas for a process"
這些測試一直告訴我,我沒有,我在設置權限UI,https://github.com/fschwiet/PShochu/blob/master/PShochu.Tests/verify_privileges.cs
沒有發生?是的,我也不想碰它。 :P – 2011-03-28 22:16:33
它是什麼操作系統?您可以嘗試運行Process Monitor並查看它是否與文件或註冊表訪問有關(考慮到它是同一用戶,似乎不太可能)。 – Luke 2011-03-28 23:22:46
Windows 7.我不知道如何在進程資源管理器中看到它,因爲我明白錯誤,進程沒有啓動。 – 2011-03-29 00:25:59