1

我正在用 C# 编写一个 .NET windows 服务。这是在本地系统帐户下运行的。但是,此服务需要调用旧的 COM 组件。这个旧的 COM 组件包含大量使用映射到网络驱动器的驱动器号的文件访问(它不是很好,但我无法重写它)。我假设这个 COM 组件也在本地系统帐户下加载,因此这些驱动器映射将失败,因为它们不存在。

有什么方法可以解决这个问题?我可以在具有这些映射的用户帐户下加载 COM 组件吗?如果有怎么办?或者,还有更好的方法

在用户帐户下运行整个 Windows 服务会解决这个问题吗?

4

2 回答 2

0

您可以将组件托管为 COM+ 应用程序,这将允许您指定用户在哪个帐户下运行。然后,您必须做适当的工作才能在 .NET 中正确访问 COM 组件,但它应该可以工作。

另一种选择是拥有一个可以在您的帐户下运行的服务,然后通过 WCF 进行调用以在服务器中进行调用。

两者的主体是相同的,您基本上是在另一个应用程序域中进行调用,并在另一个应用程序域和您的应用程序运行的应用程序域之间传递请求/响应。

于 2011-06-20T13:50:37.980 回答
0

重复我的评论作为答案:

您可以直接访问 UNC 文件路径而不是驱动器映射吗?

添加关于模仿的另一点:

您可以通过(例如)我的 Impersonator 类来模拟您必须在其他用户下运行的代码行,这是我几年前写的。

于 2011-06-20T13:51:34.267 回答