.NET 6.0 应用程序在用户注销后从 Windows 服务启动时无法使用 COM 对象

问题描述 投票:0回答:1

我正在 .NET 6.0 中开发一个应用程序,需要使用 COM 对象(这是一个严格的要求)。我现在需要通过作业调度服务来调度和启动此应用程序。

我考虑创建一个 Windows 服务来处理这项工作,因为它提供了有用的功能,例如在服务崩溃时自动重新启动服务,以确保更好的业务连续性。

但是,我遇到了一个问题:当使用

Process.Start()
的服务启动应用程序时,由于授权问题,无法访问 COM 对象。

详情:

  • 最初,应用程序根本无法访问 COM 对象。
  • 然后我在组件服务 (DCOMCNFG.exe) 中修改了 COM 对象的安全性和身份设置
  • 因此,应用程序现在可以正常工作,但仅当我登录到计算机时(通过 RDS)
  • 但是,一旦我注销,服务会继续运行,但生成的应用程序将失去对 COM 对象的访问权限
  • 我还尝试在特定用户帐户而不是本地系统下运行该服务,但这并没有解决问题

我的问题:

  1. 使用 Windows 服务是这种情况下的正确方法吗?
  2. 如果是,如何确保生成的应用程序保留使用 COM 对象的授权,即使没有用户登录?

任何有关如何解决此问题的指导或建议将不胜感激!

c# process com windows-services .net-6.0
1个回答
0
投票

我解决了这个问题。我的问题是 COM 对象“身份”属性设置为“交互式用户”,因此显然当我与会话断开连接时它停止工作。我的解决方案是设置一个特定用户并在该用户下运行服务。谢谢你的回答。

© www.soinside.com 2019 - 2024. All rights reserved.