2010-04-01 43 views
3

我有一個C#winform應用程序在本地帳戶下運行,但需要監視域上的文件夾。我使用從here稍微修改的代碼來複制文件,並且工作正常。可以使用類似的代碼與FileSystemWatcher設置模擬,以便我可以監視域上的文件夾?在模擬用戶下運行的FileSystemWatcher

+0

答案是:是的。 – 2010-04-01 18:18:57

+0

這應該怎麼做?我是否在模擬域帳戶時創建FileSystemWatcher對象? – AdmSteck 2010-04-01 18:26:13

回答

6

是的,有一個很好的模擬類here,包括這個類在你的項目不是簡單地把你的FileSystemWatcher的一個使用塊內是這樣的:

using (new Impersonator("myUsername", "myDomainname", "myPassword")) 
{ 
    ... 

    <code that executes under the new context> 

    ... 
} 
+0

我將FileSystemWatcher的初始化封裝在Impersonator的使用塊中,就像您建議的那樣,它像冠軍一樣工作。謝謝。 – AdmSteck 2010-04-01 19:37:56

+0

np,快樂編碼... – 2010-04-01 19:44:03

+0

這確實有效,因爲文件句柄在模擬用戶上下文下打開。即使模仿被恢復後,觀察者仍會繼續觀看。您需要再次冒充以觀看不同的文件。 – Sophit 2014-10-02 20:52:35

1

您可以:

應用權限允許非域用戶訪問的域文件夾(即每個人)。

使用具有權限的域帳戶登錄並運行winform應用程序。

將FileSystemWatcher代碼重構爲Windows服務,並在具有足夠權限的domian帳戶下運行它。

模擬現有代碼中的域帳戶,在代碼項目中有幾個很好的解決方案。