我有一個由Windows服務啓動的可執行文件,該程序將在客戶機器上運行,並且需要連接到遠程共享才能執行一個特定的任務。這個份額是由客戶通過用戶界面指定的,所以我們事先並不知道這一點,這意味着它不能被「硬編碼」,或預先分配了共享。由使用本地系統帳戶的Windows服務啓動的可執行文件無法訪問網絡共享
此前我們要求客戶登錄到他們的機器並在登錄時運行可執行文件,但我們一直希望允許我們的程序在服務中運行,而不需要登錄,主要是爲了讓它更方便客戶,並防止任何意外退出關閉我們的軟件。所以這也意味着我們不知道客戶機器上存在什麼本地用戶帳戶,所以我們必須使用本地系統帳戶啓動服務。
如上所述,我們現在有一個包裝服務來啓動可執行文件並執行各種任務。這似乎在大多數情況下正常工作,並訪問底層網絡罰款 - 我們的軟件的目的主要涉及捕獲數據包等。
但是,當軟件試圖連接到Windows共享(UNC名稱)它無法連接。而如果可執行文件手動啓動,則連接正常。
我一般認爲解決這類問題的建議似乎都使用用戶帳戶,因爲系統帳戶無法訪問網絡共享,但在我們的情況下,這是不可能的。有沒有其他辦法可以讓這個工作?
編輯:我忘了提及這個應用程序可以(也是最常見的)在Win2K上運行而不是XP上,我想我說的是本地網絡帳戶在XP之前是不可用的?
謝謝。你的最後一個建議看起來就像我的情況一樣,我創建了一個專用帳戶,並且能夠使用此帳戶和CreateProcessAsUser()啓動我的可執行文件,然後它似乎能夠訪問網絡共享(如果它在管理員組中)... – 2008-10-31 15:02:05
顯然,您必須授予您的專用帳戶適當的訪問權限。 – 2008-11-01 16:17:55