2013-10-23 71 views
1

我用C#編寫了一個ConsoleApplication,它的所有工作只是調用dll(動態鏈接庫)的一些函數,而Init()是這些函數之一,它將讀取註冊表路徑爲HKEY_CURRENT_USER \ Software \ CompanyName \ ConfigFolder,那麼這個ConsoleApplication目前運行良好。 但是,我被告知要編寫一個相同的函數程序,但採用windows服務的形式。好的,C#.NET可以方便地編寫Windows Services項目。我剛剛複製了我的ConsoleApplication的代碼並修改了一個litte。但問題是我發現它不會讀取以前的寄存器路徑(HKEY_CURRENT_USER \ Software \ CompanyName \ ConfigFolder),因此Init()函數現在不起作用。我想知道Windows服務將讀取的正確註冊表路徑是什麼。 PS:第一次運行我的ConsoleApplication時,註冊表路徑HKEY_CURRENT_USER \ Software \ CompanyName \ ConfigFolder不存在,所以這個Init()函數會搜索當前路徑下名爲「config.ini」的配置文件,之後它會將該配置寫入註冊表(HKEY_CURRENT_USER \ Software \ CompanyName \ ConfigFolder)。 Howerver,當我將我的應用程序轉換成Windows服務時,無論我把config.ini放到項目當前路徑還是C:\ Windows \ System32中,它都不起作用。我的操作系統是Windows 7.我的Windows服務從應用程序讀取不同的註冊表路徑

+1

在哪個用戶做你的Windows服務運行?這應該是一個線索。 –

+0

我希望你不是一個從不在帖子中顯示代碼的人,但是當他們做所有的異常時都會被catch(Exception){}'吃掉/忽略。請發佈發生的錯誤消息和帳戶您運行下的服務。 –

回答

2

它給出了什麼錯誤?或者它不會給出錯誤?如果有關看錯註冊表/寫訪問,請確保您正在運行的服務下LOCALSYSTEM管理員

+0

謝謝,我找到了答案:在用戶帳戶下設置服務。所以它像應用程序一樣運行,就像你說的那樣。 – user2909792

+0

很高興幫助:) –

相關問題