2010-01-17 21 views
4

我正在研究需要沙盒應用程序的項目。我可以創建一個Windows用戶,創建一個目錄,用應用程序填充目錄,並以用戶身份運行應用程序。這工作完全罰款運行作爲控制檯應用程序,但是當我安裝它作爲一個服務,我得到這個異常:作爲用戶從Windows服務失敗與Access運行進程被拒絕?

System.ComponentModel.Win32Exception: Access is denied 
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
at System.Diagnostics.Process.Start() 

拋出此異常的代碼是:

_process = new Process 
    { 
    StartInfo = 
     { 
      Arguments = "", 
      CreateNoWindow = true, 
      ErrorDialog = false, 
      FileName = instanceDirectory + "program.exe", 
      WorkingDirectory = instanceDirectory, 
      UseShellExecute = false, 


      UserName = GetUserNameForInstance(_id), 
      Password = GetPasswordForInstance(_id), 
      Domain = "" 
     }, 
    EnableRaisingEvents = true 
    }; 

_process.Exited += ProcessExited; 
_process.Start(); 

再次,這是隻作爲Windows服務運行時引發。根據Windows中的服務面板,服務在LOCAL SYSTEM下運行。

任何想法?

+0

可執行文件位於何處? – wj32 2010-01-17 08:27:54

+0

我在這裏面對完全相同的問題。你能找到解決方案嗎? – kizzx2 2011-05-28 17:18:38

回答

1

該帳戶是否擁有您正在使用的資源的權限?它是否具有讀取和寫入目錄的能力?

在這些類型的情況下,99%的時間是准許問題。

+0

用戶擁有這些資源的權限,並且在啓動應用程序的應用程序從控制檯運行時,該進程將正確啓動。我唯一的猜測就是它實際上是以服務中的不同用戶身份啓動一個進程的問題。與作爲服務和控制檯運行唯一顯着的區別是服務具有本地系統權限,而控制檯作爲當前用戶運行。有什麼標誌我應該開始服務? – Mike 2010-01-17 04:32:44

相關問題