如何使用 C# 配置 DCOM 访问、启动和设置运行权限

Posted

技术标签:

【中文标题】如何使用 C# 配置 DCOM 访问、启动和设置运行权限【英文标题】:How to configure DCOM access, launch and set run as permission using c# 【发布时间】:2015-07-30 00:51:03 【问题描述】:

我正在尝试为我们的自定义 DCOM 应用程序之一配置访问、启动权限以及设置运行。

我已经浏览过这些链接 dcomcnfg functionality programmatically

和http://www.myitforum.com/articles/11/view.asp?id=9323(下载的c++ DCOMPerm库)

我尝试了上面第一个链接中由 "longofest" 编写的代码,但是下面的代码行

var value = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Ole", "DefaultAccessPermission", null);

总是给我一个空值,但是当我查看我机器上的注册表项时,Ole 注册表项的“DefaultAccessPermission”项确实有一个二进制值,那么为什么我总是收到一个空值,不知道。

其次,我尝试了从上面第二个链接下载的 c++ 库,并尝试对具有 DLLImport 属性的方法之一进行 COM 调用(用于自动启动 DCOM 对象的权限),但一些编组问题并没有让我通过在对应于 C++ 类型的 C# 类型中,并吐出一个异常说 PInvoke 不能返回变体。

在谷歌上搜索了几个小时后,我找不到任何具体的信息,对此帐户的任何帮助将不胜感激。

从未使用过 C++,对该语言了解甚少。

更新:空值问题已解决,但不知道如何设置访问权限和设置运行方式。我在 c++ 代码中看到,为了设置访问权限,代码需要域和用户名,但是 c# 的等价物是什么,不知道....

【问题讨论】:

您的代码是作为 32 位还是 64 位进程运行的? This 可能会对您有所帮助。 我在项目属性的 build 选项卡中选择了 Any CPU,它位于 64 位 windows 7 机器上。 【参考方案1】:

我使用 Microsoft 的 tblimp.exe 工具并从 DComPerm.dll(c++ 程序集)创建了一个互操作 .dll 程序集以在 C# 代码中引用,并通过运行时可调用包装器调用 COM 对象上的各种方法来编写我的 C# 程序,因此不需要 DLLImport 或 MarshalAs 属性,因为 RCW 会处理所有的编组和解组问题。

【讨论】:

以上是关于如何使用 C# 配置 DCOM 访问、启动和设置运行权限的主要内容,如果未能解决你的问题,请参考以下文章

谁知道wincc opc server具体详细设置? 留下联系方式,教会200分奉上!

通过 PowerShell 的 DCOM 机器级访问和启动权限

如何通过 c# 以编程方式更改 COM 安全设置?

使用本机 .NET 配置 DCOM 设置?

通过 PowerShell 更改 DCOM 对象权限后要重新启动啥?

C#调用office组件访问拒绝的解决方法(failed due to the following error: 80070005 拒绝访问)