如何在没有模拟权限的情况下连接到远程目录?

时间:2010-12-29 01:02:02

标签: .net windows-services path

我有一个需要与远程计算机上的文件交互的.NET服务。在配置中,用户指定他们需要访问的本地或远程(UNC)路径。用户还为有权访问这些目录的用户指定用户名和密码。当服务运行时,它连接到每个路径并处理那里的文件。

我尝试了模仿,但客户对于授予服务权限(通常作为本地系统运行)很谨慎。

我还发现代码(http://www.aejw.com/)将远程目录映射为映射驱动器并以这种方式访问​​它们。但是,这会导致某些版本的Windows抱怨多个连接。

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

您有两种选择:

让您的服务根据自己的帐户访问所需的文件.....

或允许假冒您的服务来执行此操作。我相信你可以理解为什么远程系统可以对不允许的事情执行操作会很糟糕。

我相信你也可以理解为什么人们不想给所有服务提供冒充特权。

我会仔细研究您的服务设计及其尝试的内容。如果您可以移动文件所在的服务或从客户端计算机执行代码,那么在这种情况下这可能会更好。

我正在尝试了解您的应用,但如果您只有一个用户名和密码,是否可以将该服务记录为该用户?

答案 1 :(得分:0)

你看过这个博客了吗? http://blogs.msdn.com/b/joncole/archive/2009/09/21/impersonation-code-in-c.aspx

使用这个类,您应该能够执行带有using()块的代码,该块需要模拟,并且可以将块留给普通用户。