Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Reg Free COM-隔离COM引用-缺少值';(默认)和#x27;_C#_.net_Com_Vb6 - Fatal编程技术网

C# Reg Free COM-隔离COM引用-缺少值';(默认)和#x27;

C# Reg Free COM-隔离COM引用-缺少值';(默认)和#x27;,c#,.net,com,vb6,C#,.net,Com,Vb6,因此,我有一个由.NET 3.5程序集库引用的无注册VB6 DLL,它最终由.NET 3.5 WinForms应用程序引用(不确定它是否相关,但用于绘制图片) 我收到错误“隔离COM引用'SomeVBDll'时出现问题:注册表项'HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{dd1d7f58-1d6b-4370-a1b9-05c03816a128}\InProcServer32'缺少值”(默认值) 我最初的尝试是检查这个值是否确实存在,然后将它放在适当的位置

因此,我有一个由.NET 3.5程序集库引用的无注册VB6 DLL,它最终由.NET 3.5 WinForms应用程序引用(不确定它是否相关,但用于绘制图片)

我收到错误“隔离COM引用'SomeVBDll'时出现问题:
注册表项'HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{dd1d7f58-1d6b-4370-a1b9-05c03816a128}\InProcServer32'缺少值”(默认值)

我最初的尝试是检查这个值是否确实存在,然后将它放在适当的位置。这就产生了上述关于编译的信息

是否有人遇到此问题并知道解决方法?

提前谢谢。下面是直接引用VB6 dll的程序集的清单

    <assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity name="Native.App.Core" version="1.0.0.0" type="win32" />
  <file name="SomeVBDll.dll" asmv2:size="184320">
    <hash xmlns="urn:schemas-microsoft-com:asm.v2">
      <dsig:Transforms>
        <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
      </dsig:Transforms>
      <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
      <dsig:DigestValue>BWWHQTqNGUupT8xznLoN3jn7S9Y=</dsig:DigestValue>
    </hash>
    <typelib tlbid="{755c1df5-d0c5-4e10-a93d-54bf186e8daf}" version="1.0" helpdir="" resourceid="0" flags="HASDISKIMAGE" />
    <comClass clsid="{dd1d7f58-1d6b-4370-a1b9-05c03816a128}" threadingModel="Apartment" tlbid="{755c1df5-d0c5-4e10-a93d-54bf186e8daf}" progid="SomeVBDll.MyClass" />
  </file>
</assembly>

BWWHQTQNgup8xZnLon3JN7S9Y=
编辑///


将VB6 DLL中的所有类标记为多用途似乎解决了这个问题虽然这解决了我遇到的问题,但仍然允许我使用reg free COM,有人知道如何避免将所有COM类实例化为多用途吗?

这是我看到的唯一建议解决方案(如果您想避免将所有类标记为多用途可能带来的安全/维护问题)是删除“../InProcServer32”注册表项,但该解决方案附带了标准的“小心弄乱注册表”警告。

当标记为专用VB6 COM类时,不会为Inproc32注册值,并且Visual Studio生成的程序集清单不完整。有一些工具,如Make my Manifest,可以帮助您为组件创建清单

此线程[表示问题可能与VB6 dll中的某些类的实例标记为私有有关。我也是这样,我有一个多用途(非私有)类和其他类都是私有的。我不想将其他类标记为多用途,但我会这样做,看看这是否真的解决了这个问题……好吧,所以多用途的问题似乎只是一个临时的修复,而不是实际的根本问题。我现在遇到的问题与我原来的帖子中提到的相同。我是以非管理员的身份运行的在Windows Vista Ultimate x64 Building上,将Visual Studio 2008中的项目作为非管理员。对于COM DLL中定义的每个类,它似乎都报告了上述错误。我已经验证了每个类都标记为多用途。仅供将来的读者参考-我认为另一个具有类似错误消息的问题是另一个问题:即使在构建过程中删除/InProcServer32键也不能解决这个问题。如果我能做到这一点,我会很好,但即使删除这些键,我仍然会收到错误。因此,即使我在VB6 dll多用途中标记了每种类型,你认为我仍然可能存在清单问题吗?我将采取一种新的方法当我有时间看看这是否有帮助的时候,看看MMM。谢谢你的发帖。