如何使用 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 机器级访问和启动权限
通过 PowerShell 更改 DCOM 对象权限后要重新启动啥?
C#调用office组件访问拒绝的解决方法(failed due to the following error: 80070005 拒绝访问)