【问题标题】:Get a list of mapped drives as a Windows service.获取映射驱动器列表作为 Windows 服务。
【发布时间】:2017-11-15 00:04:07
【问题描述】:

我正在尝试将我机器上的映射驱动器列表作为 Windows 服务。如果我将代码作为普通程序运行,而不是作为 Windows 服务运行,我可以获得正确的列表。我看过几篇关于这个主题的帖子,但没有一个给出明确的解决方案。

我在创建该服务的同一帐户上运行该服务,并且该服务具有管理员权限。

有谁知道如何正确地做到这一点?

【问题讨论】:

  • 您能否澄清一下这意味着我在创建该服务的同一帐户上运行该服务,并且该服务具有管理员权限。这是否意味着您以普通 Windows 用户的身份运行该服务?
  • 是的。由于映射驱动器是特定于用户的,因此它只会显示给创建它的用户。换句话说,我正在使用能够看到映射驱动器的帐户(我只连接了一个)。
  • 为了澄清问题,您是说运行服务的帐户具有未报告的映射驱动器吗?
  • @RufusL 是的,这就是问题所在。但是,当我将代码作为服务运行时,它们不会被报告。如果我只是从 Visual Studio 运行我的代码,就会报告它们。

标签: c# service windows-services wmi mapped-drive


【解决方案1】:

不可能

请参阅以下 MSDN 文章

https://msdn.microsoft.com/en-us/library/windows/desktop/ms685143%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

如果服务配置为在用户帐户下运行,系统始终会为用户创建新的登录会话并在该新登录会话中启动服务。因此,服务无法管理在用户的其他会话中建立的驱动器映射。

【讨论】:

    【解决方案2】:

    如果您在启用了 UAC 的 Windows 7 中,则管理会话与常规用户会话具有不同的映射驱动器。打开管理命令提示符并运行 net show 并检查映射的驱动器状态。

    更新:我在我的 Windows 10 工作站上设置了 EnabledLinkedConnections,所以我没有看到这个问题。

    【讨论】:

    • 嗯...我在 Windows 10 上
    • 我的 Windows 10 上有一个特殊的注册表项,不会出现此问题。我更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多