Tag: com

在快照视图中查找文件的本地副本

我在一个工具中使用ClearCase自动化库(CAL),帮助我跟踪未集成的变化; 现在我想扩展工具,所以我也可以通过它进行检查。 对于这个function,我需要find一个快照视图的本地副本。 虽然我可以问问哪些视图附加到某个目录,我似乎无法find一个函数来查找给定视图的本地目录; 也似乎最可靠的方法来查找是否本地存在快照视图是比较HostName属性与本地计算机名称。 所以:鉴于IClearCase接口,我怎么能find所有的快照视图存在的目录?

初始化VCProjectEngineObject(Microsoft.VisualStudio.VCProjectEngine.dll)时出现错误80040154(类未注册的exception)

我试图运行此工具,以便将Visual C ++项目转换为生成文件。 我试图转换项目的项目是在VS2008中编写的,所以我使用的是来自版本9的Microsoft.VisualStudio.VCProjectEngine.dll的引用。 它在这一行失败: VCProjectEngine vcprojEngine = new VCProjectEngineObject(); 除了以下例外: 检索具有CLSID {D19A00C4-A7F9-4E14-A5E01-D060B7EB57F3}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。 当试图用regsvr32注册VCProjectEngine.dll时,我得到一个错误,找不到入口点DllRegisterServer。 任何想法?? 提前致谢。

如何修复COMException错误80040154?

将正在运行的C#项目从64位Windows 7计算机移到32位XP计算机上导致以下错误: 检索具有CLSID {681EF637-F129-4AE9-94BB-618937E3F6B6}的组件的COM类工厂失败,原因如下:80040154。 681EF637-F129-4AE9-94BB-618937E3F6B6不在registry中,因此没有正确安装,但这是以前在64位Windows 7计算机上出现问题的相同ID。 这个64位Windows 7机器上的这个错误的解决scheme在这里find了 (将Platform Target更改为x86),但是这并不能解决32位XP机器上的问题。 如何find与681EF637-F129-4AE9-94BB-618937E3F6B6相关的DLL,或者更好,我该如何修复这个exception?

活动目录COMexception – 发生操作错误(0x80072020)

我得到一个间歇性COMexception“ 操作错误发生(0x80072020) ”(如下所示)当我尝试使用方法GroupPrincipal.FindByIdentity查询Active Directory 这是我的代码: PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Environment.UserDomainName); GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "Group to find"); 我收到exception: Inner Exception: System.Runtime.InteropServices.COMException (0x80072020): An operations error occurred. at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry.Bind() at System.DirectoryServices.DirectoryEntry.get_AdsObject() at System.DirectoryServices.PropertyValueCollection.PopulateList() at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName) at System.DirectoryServices.PropertyCollection.get_Item(String propertyName) at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer() at System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit() at System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() at System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext […]

Windows 64位registry与32位registry

我听说在Windows x64体系结构上,为了支持运行x86和x64应用程序,有两个单独/不同的Windowsregistry集合 – 一个用于x86应用程序访问,另一个用于x64应用程序访问? 例如,如果一个COM在x86registry中注册CLSID,那么x64应用程序将永远无法通过CLSID访问COM组件,因为x86 / x64有不同的registry集合? 所以,我的问题是,我对上述样本的理解是否正确? 我也想获得更多的文档来学习这个话题,关于x64架构上的两套不同的registry。 (我做了一些search,但没有find任何有价值的信息。) 在此先感谢乔治

从x64 .NET访问x86 COM

我有一个x64服务器,因为我的库被编译为AnyCPU,运行在x64下。 我们需要访问在x86下注册的COM组件。 我对COM的了解不够,我的谷歌search引导我无处可去。 问题:对于COM组件,我可以使用从x64到x86的符号registry链接吗? 我是否还需要在x64下注册COM组件? 我可以(在这里的任何声明…)? 谢谢。

如何在C#中创build一个ActiveX控件(COM)?

我正在尝试创build一个ActiveX控件。 我使用Visual Studio 2010 (.NET 4)。 我需要创build一个COM对象(在C#中),不知道如何开始(使用什么types的项目等)

获取ScriptControl以使用Excel 2010 x64

我试图使用解决这个问题 ,但是,每当我尝试运行最基本的东西,我得到一个Object not Defined错误。 我以为这是我的错(没有安装ScriptControl)。 不过,我试着按照这里所描述的安装,无济于事。 我正在使用Office 2010 64位版本运行Windows 7 Professional x64。

将32位COM DLL注册到64位Windows 7

我有一个32位的COM组件DLL,这个DLL是用Delphi编写的。 这是一个Win32 DLL。 我想在.NET平台上的Visual C#项目中使用这个DLL。 我无法在项目中添加对此DLL的引用。 我尝试以Windows 7 64位pipe理员身份在“命令提示符”中进行注册,但出现此错误: 检查模块是否与regsvr32.exe的x86(32位)或x64(64位)版本兼容。 首先我把DLL文件放到windows / system32文件夹中。 然后我以pipe理员身份打开命令提示符。 我写regsvr32 huginalpha.dll并执行这个命令。 但是我得到错误。 我能做什么?

在具有多个接口()的对象中实现QueryInterface()时,为什么我需要明确的向上转换?

假设我有一个实现两个或多个COM接口的类: class CMyClass : public IInterface1, public IInterface2 { }; 几乎我看到的每个文档都build议,当我为IUnknown实现QueryInterface()时,我显式地将此指针上传到其中一个接口: if( iid == __uuidof( IUnknown ) ) { *ppv = static_cast<IInterface1>( this ); //call Addref(), return S_OK } 问题是为什么我不能只复制这个 ? if( iid == __uuidof( IUnknown ) ) { *ppv = this; //call Addref(), return S_OK } 这些文档通常说,如果我做了后者,我将违反在同一对象上对QueryInterface()的任何调用必须返回完全相同的值的要求。 我不太明白。 他们的意思是,如果我QI()为IInterface2并调用QueryInterface()通过该指针C ++将通过这个略有不同,如果我QI()IInterface2因为C ++将每次使这一点的子对象?