【问题标题】:Why does DriveInfo.GetDrives() not get network mapped drive in windows service为什么 DriveInfo.GetDrives() 不能在 Windows 服务中获取网络映射驱动器
【发布时间】:2012-08-15 07:44:28
【问题描述】:

我有一个使用 VS 2010 在 .NET C# 中开发的 Windows 服务,我正在调用 DriveInfo.GetDrives(),但它没有得到 Z: 驱动器(映射的网络驱动器),

我做了一些谷歌搜索,发现一些结果指向 Windows 帐户权限,所以我尝试了所有帐户类型的服务安装程序,例如 LocalSystem、User、LocalService、NetworkService,但都没有工作,我仍然无法获得驱动器 @987654323 @。

我进行了另一项测试,调试 Windows 服务(作为控制台应用程序),我可以通过这种方式获得驱动器 Z:

我的问题有解决方案吗?

【问题讨论】:

  • 驱动器映射每个用户的设置。该服务可能正在使用不同的用户帐户运行。不要在服务中使用映射的驱动器号。

标签: c# .net windows-services


【解决方案1】:

您需要使用已映射网络驱动器的帐户来运行 Windows 服务,例如,您用于作为控制台应用程序运行的帐户。正如 Hans 建议的那样,您不应该在 Windows 服务中使用映射驱动器,因为它们是与真实用户相关的概念。

但是,如果您真的想继续使用映射驱动器,请参阅此相关问题以了解与此特定情况相关的陷阱和解决方法:

How to map a network drive to be used by a service

【讨论】:

    【解决方案2】:

    驱动器映射与 LUID 相关联,您可以在同一用户下拥有多个身份验证 ID(例如服务、正常完整性级别、高完整性级别等)。

    您可以在用户会话中运行正常的完整性级别进程,以提供用户创建的映射驱动器列表。这是how Windows Explorer copies mapped drives for elevated setup programs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多