谢谢大家的支持和关注,祝大家新年哈皮,2017,我们一起加油,一起进步。
如果有什么咨询,建议,合作,可以添加我的微信号,联系方式,主页上有,最近有人问我,如何判定某个dll是否注册,命令是regsvr32,注册完以后可以再注册表内查的到,位置是:LOCALMACHINE\SOFTWARE\Classes\CLSID 下,至于哪一个嘛得看里面的value值,Key值是组件的GUID,不好辨认,下面的方法,可以判断LOCALMACHINE\SOFTWARE\Classes\CLSID 下是否有这个组件的value,即这个dll是否注册。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/// <summary> /// 判断dll的注册信息是否存在 /// </summary> /// <param name="strVal">dll在注册表内的值</param> /// <returns>有就是true,没有就是false</returns> public static bool IsRegeditKeyExist(string strVal) { string[] subkeyNames; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE\\Classes\\CLSID"); subkeyNames = software.GetSubKeyNames(); string stra = ""; //取得该项下所有键值的名称的序列,并传递给预定的数组中 //LayoutFolder for (int i = 71; i < subkeyNames.Length; i++) { software = hkml.OpenSubKey("SOFTWARE\\Classes\\CLSID\\" + subkeyNames[i]); stra = software.GetValue("")==null ? "" : software.GetValue("").ToString(); if (stra == strVal) //判断键值 { hkml.Close(); return true; } } hkml.Close(); return false; } |