2011-10-11 73 views
3

該文檔聲明CreateProcess創建一個在調用進程的安全上下文下運行的進程,而不是當前模擬令牌的安全上下文。這是否意味着新流程的許可將保持不變,無論是否冒充?模擬和CreateProcess

我有以下代碼失敗,ACCESS_DENIED錯誤:

  1. 方法A下管理員運行;進程A模擬一個普通用戶「測試」;
  2. 進程A通過調用CreateProcess來啓動新進程B;進程B調用OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,..);進程B調用OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,..);

步驟4因ACCESS_DENIED錯誤(5)失敗。我檢查過程B在管理員下作爲進程A運行。爲什麼當它在與進程A相同的用戶上下文中運行時會失敗?

+1

我會猜測您確實需要使用CreateProcessAsUser()。 –

+0

@Hans聽起來Ranta希望新進程將令牌用於調用進程,而不是模擬令牌。 –

+0

如果直接啓動進程B,會發生什麼情況? –

回答