如何使用c#

时间:2015-07-30 00:51:04

标签: c# c++ dcom

我正在尝试配置访问权限,启动权限以及设置运行我们的自定义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”条目确实有一个二进制值,那么为什么我总是收到一个空值,不知道。< / p>

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

谷歌搜索几个小时后我找不到任何具体内容,对此帐户的任何帮助都将不胜感激。

从未使用过C ++,对这门语言知之甚少。

更新:解决了空值问题,但我不知道如何设置访问权限并将运行设置为。我在c ++代码中看到,为了设置访问权限,代码需要一个域名和用户名,但c#等价于那个,不知道....

1 个答案:

答案 0 :(得分:0)

I used the tblimp.exe tool from Microsoft and created an interop .dll assembly out of DComPerm.dll (c++ assembly) to reference in C# code and by means of Run Time Callable Wrapper I'm calling various methods on COM objects to write my C# program, so no need of DLLImport or MarshalAs attribution since RCW will take care of all the marshalling and unmarshalling issues.