【发布时间】:2011-06-20 13:36:29
【问题描述】:
我正在用 C# 编写一个 .NET windows 服务。这是在本地系统帐户下运行的。但是,此服务需要调用旧的 COM 组件。这个旧的 COM 组件包含大量使用映射到网络驱动器的驱动器号的文件访问(它不是很好,但我无法重写它)。我假设这个 COM 组件也在本地系统帐户下加载,因此这些驱动器映射将失败,因为它们不存在。
有什么方法可以解决这个问题?我可以在具有这些映射的用户帐户下加载 COM 组件吗?如果有怎么办?或者有没有更好的方法
在一个用户帐户下运行整个 Windows 服务会解决这个问题吗?
【问题讨论】:
-
可以直接访问 UNC 文件路径而不是驱动器映射吗?
-
不能在系统账号下运行服务吗?
-
我假设他不能,但即使这样也无济于事。试试stackoverflow.com/questions/125341/impersonation-in-net,它可能就是你要找的东西。
-
@Uwe Keim's 给出了答案。该系统用户具有一些奇怪的仅限本地权限。另一种方法是以您创建的用户身份运行并提供必要的权限。
标签: .net com service interop account