FileSystemWatcher 在模拟用户下运行

4

我有一个运行在本地账户下的c# winform应用程序,但需要监视域上的文件夹。我正在使用稍微修改过的代码来自这里来复制文件,这个方法很好用。是否可以使用类似的代码与FileSystemWatcher设置身份验证,以便我可以监视域上的文件夹?


这应该怎么做?我是不是只需要在模拟域帐户时创建FileSystemWatcher对象? - AdmSteck
2个回答

7

是的,这里有一个很好的模拟类(点击此处),将这个类包含到您的项目中,然后像这样在using块中放置您的FileSystemWatcher:

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

   <code that executes under the new context>

   ...
}

1
我按照你的建议,将FileSystemWatcher的初始化包装在了使用Impersonator的using块中,结果非常成功。谢谢。 - AdmSteck
这个是可以工作的,因为文件句柄是在模拟用户上下文中打开的。即使模拟已经被还原,观察器仍然会继续监视。如果您要监视不同的文件,您需要再次进行模拟。 - Sophit

1

你可以:

将权限应用于域文件夹,以允许非域用户访问(即“所有人”)。

使用具有权限的域帐户登录并运行winform应用程序。

重构FileSystemWatcher代码为Windows服务,并在具有足够权限的域帐户下运行它。

在现有代码中模拟域帐户,Code Project上有几个好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接