我有一个Windows服务,该服务会轮询用户选择的目录中是否有新文件。选择网络位置(同一网络上远程计算机上的文件夹)后,我会向用户查询远程计算机的用户名和密码(有权访问该文件夹的用户),我会对其进行验证并将其存储到服务的注册表中。这种方法可以正常工作。(s 服务作为本地计算机运行,并使用模拟代码)。>
但是有些情况下我并没有意识到..
1。。直接连接到网络的无线HDD /存储设备。目前,我使用模拟代码来提供用户凭据。在这种情况下,该驱动器将可以被作为本地计算机运行的服务直接访问?
2。。如何处理有权访问该文件夹的域用户?
我正在使用以下代码来模拟用户
https://stackoverflow.com/a/9213965/848968
UserImpersonation impersonator = new UserImpersonation();
impersonator.impersonateUser("username", "", "password"); //No Domain is required
对于域用户,该怎么办?
答案 0 :(得分:2)
- 直接连接到网络的无线HDD /存储设备。当前我使用模拟代码向用户提供 凭据。在这种情况下,驱动器可以直接访问 服务以localmachine的身份运行?
驱动器如何连接?如果它的SMB通过UNC路径,那应该没问题。当您进入映射驱动器时,Windows服务将无法使用这些驱动器。
- 如何处理有权访问该文件夹的域用户?
impersonator.impersonateUser("username", "domain", "password");
您可能还想查看this answer,以获得更多的模拟信息和示例代码。有一个很棒的库为您打包。