2009-08-28 65 views
2

Windows服務可以在註冊表中的參數,如在訪問Windows服務參數從C#

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS\Parameters 

我要訪問我自己用C#編寫服務的參數。有沒有官方的方式(例如通過ServiceBase類)來做到這一點,還是必須硬編碼我想避免的註冊表路徑?

回答

1

您是否正在尋找WAS啓動服務器的參數,或者註冊表說它應該以什麼開始?

如果您尋找的是被用於啓動應用程序,你可以使用Environment.CommandLine或使激增的主要功能是declaired像

[STAThread] 
     static void Main(string[] args) 
     { 
      // Do something with args array, but il make sure its not null first. 
     } 

如果您正在尋找什麼樣的ARG應該與我開始的參數閱讀該註冊表設置沒有問題。

+0

嗨, 感謝您的回答。但是,我不認爲作爲參數傳遞的(命令行)參數等同於存儲在Parameters註冊表項中的參數。至少,我的測試結果並不如此。 – Christoph 2009-08-28 08:48:35

+1

不,他們不是等量的。通過傳遞給其ServiceMain()處理程序的實際參數啓動服務的唯一時間是用戶在SCM的UI中鍵入啓動參數並按下「開始」按鈕時,或者其他應用程序使用其調用Win32 API StartService()函數lpServiceArgVectors參數填寫。至於傳遞命令行參數(與服務啓動參數不同),它們必須在服務的主註冊表項的「ImagePath」值中指定,並因此在SCM啓動時傳入新的服務流程。 – 2009-09-01 00:51:16