5

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

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

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

我的问题有解决方案吗?

4

2 回答 2

6

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

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

如何映射要由服务使用的网络驱动器

于 2012-08-19T20:47:33.880 回答
2

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

您可以在用户会话中运行正常的完整性级别进程,以提供用户创建的映射驱动器列表。这就是Windows 资源管理器为提升的安装程序复制映射驱动器的方式

于 2012-08-20T01:44:11.470 回答