这个问题在这里已经有了答案:HowtocheckifaDLLfileisregistered?(7个答案)关闭7年前。如何使用.NET检查COM组件(EXE/DLL文件)是否已注册?
我最近挑选了一些C#代码,其中一个类的上方有一个Guid属性。我不明白这是什么或它的用途。谁能给我简要介绍一下它是什么,或者只是指出一些提供更多相关信息的文章的方向?谢谢! 最佳答案 它是表示相关类的COM标识符。该类专为COM互操作而设计。 关于c#-在C#中类上方出现的Guid属性是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3760126/
有时,当我结束应用程序并尝试释放一些COM对象时,我会在调试器中收到一条警告:RaceOnRCWCleanUpwasdetected如果我编写一个使用COM对象的类,我是否需要实现IDisposable并在IDisposable.Dispose中对它们调用Marshal.FinalReleaseComObject>正确释放它们?如果Dispose没有被手动调用,我是否还需要在终结器中释放它们,还是GC会自动释放它们?现在我callDispose(false)inthefinalizer但我想知道这是否正确。我使用的COM对象也有一个类监听的事件处理程序。显然事件是在另一个线程上引发的,
我正在生成加密key以使用Rijndael(AES)encryptionalgoritm加密一些敏感数据.我正在使用guid作为key生成器。这些key是否足够“强大”?注意:只敏感20分钟。 最佳答案 没有。可以预测GUIDkey,至少是那些由.NET/WinAPI生成的key。还要记住,GUID甚至没有真正的128位随机性,因为版本号是固定的。这首先会为您提供一个非常弱的key。更糟糕的是,GUID算法的多个版本都存在可预测性问题。关键是GUID不是随机创建的,而是遵循一定的规则,使GUID几乎不可能发生冲突。正如评论中所讨论的
如果出现以下情况,如何在C#中使用正则表达式进行测试:字符串的长度正好是32字符串只包含0-9的数字和a-f的小写字母 最佳答案 怎么样:Regexregex=newRegex("^[0-9a-f]{32}$");if(regex.IsMatch(text))... 关于C#简单正则表达式-32个字符,仅包含0-9和a-f(GUID),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions
检查Guid是否为空的正确方法是什么?第一种方法:Guidvalue;//...if(value!=Guid.Empty)或第二种方法:if(value!=default(Guid))我认为第二种方法更好,但我无法解释为什么。 最佳答案 因为Guid.Empty==default(Guid)这并不重要,但我更喜欢Guid.Empty以提高可读性。 关于c#-将Guid与默认值或空值进行比较?,我们在StackOverflow上找到一个类似的问题: https:
ThisposthasbeennotedSohasthisone在我的开发机器上,我正在尝试使用包管理器控制台中的更新数据库重新创建我的数据库。我相信我已按照上述帖子中的说明进行操作。我收到此错误消息:Afileactivationerroroccurred.Thephysicalfilename'\WRDatabase.mdf'maybeincorrect.Diagnoseandcorrectadditionalerrors,andretrytheoperation.CREATEDATABASEfailed.Somefilenameslistedcouldnotbecreated.C
当COM对象在STA线程上实例化时,该线程通常必须实现消息泵以编码来回其他线程的调用(请参阅here)。可以手动发送消息,也可以依靠一些但不是全部线程阻塞操作在等待时自动发送与COM相关的消息这一事实。文档通常无助于决定哪个是哪个(参见thisrelatedquestion)。如何确定线程阻塞操作是否会在STA上发送COM消息?到目前为止的部分列表:阻止做泵*的操作:Thread.JoinWaitHandle.WaitOne/WaitAny/WaitAll(虽然不能从STA线程调用WaitAll)GC.WaitForPendingFinalizersMonitor.Enter(因此lo
我已经改写了这个问题。当.net对象通过COM迭代操作暴露给COM客户端时,将创建一个CCW(COMCallableWrapper),它位于COM客户端和托管.net对象之间。在COM世界中,对象会记录其他对象对它的引用数。当引用计数变为零时,对象将被删除/释放/收集。这意味着COM对象终止是确定性的(我们在.net中使用Using/IDispose来确定性终止,对象终结器是非确定性的)。每个CCW都是一个COM对象,并且它像任何其他COM对象一样被引用计数。当CCW终止(引用计数变为零)时,GC将无法找到CCW包装的CLR对象,并且CLR对象符合收集条件。快乐的日子,世界上一切都好。
如何在C#中通过COM对象的反射读出所有属性名称?如果我知道名称,我就知道如何获得该属性(property)。comObject.GetType().InvokeMember("PropertyName",System.Reflection.BindingFlags.GetProperty,null,comObject,null);但是什么时候我想转储所有属性呢?PropertyInfo[]properties=t.GetProperties();这种方式不适用于Com对象。如果我执行GetMembers(),我会得到这些成员:Name:GetLifetimeServiceName:I