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