模拟服务和网络位置的问题

时间:2018-09-10 18:41:19

标签: c# .net windows service impersonation

我有一个Windows服务,该服务会轮询用户选择的目录中是否有新文件。选择网络位置(同一网络上远程计算机上的文件夹)后,我会向用户查询远程计算机的用户名和密码(有权访问该文件夹的用户),我会对其进行验证并将其存储到服务的注册表中。这种方法可以正常工作。(s 服务作为本地计算机运行,并使用模拟代码)。

但是有些情况下我并没有意识到..

1。。直接连接到网络的无线HDD /存储设备。目前,我使用模拟代码来提供用户凭据。在这种情况下,该驱动器将可以被作为本地计算机运行的服务直接访问?

2。。如何处理有权访问该文件夹的域用户?

我正在使用以下代码来模拟用户

https://stackoverflow.com/a/9213965/848968

UserImpersonation impersonator = new UserImpersonation();
impersonator.impersonateUser("username", "", "password"); //No Domain is required

对于域用户,该怎么办?

1 个答案:

答案 0 :(得分:2)

  
      
  1. 直接连接到网络的无线HDD /存储设备。当前我使用模拟代码向用户提供   凭据。在这种情况下,驱动器可以直接访问   服务以localmachine的身份运行?
  2.   

驱动器如何连接?如果它的SMB通过UNC路径,那应该没问题。当您进入映射驱动器时,Windows服务将无法使用这些驱动器。

  
      
  1. 如何处理有权访问该文件夹的域用户?
  2.   

impersonator.impersonateUser("username", "domain", "password");

您可能还想查看this answer,以获得更多的模拟信息和示例代码。有一个很棒的库为您打包。