繁体   English   中英

.NET Com互操作帐户

[英].NET Com Interop Account

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

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

使用用户帐户运行整个Windows服务是否可以解决此问题?

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

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

不过,两者的主体是相同的,您基本上是在另一个应用程序域中进行调用,并将请求/响应在另一个应用程序域与您的应用程序所在的域之间穿梭。

重复我的评论作为答案:

除了驱动器映射,您还可以直接访问UNC文件路径吗?

补充一点关于假冒的观点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM