C#通过代码注册COM组件
using System; using System.Diagnostics; using Microsoft.Win32; namespace ChuckLu.Utility { public class Cmd { private Cmd() { } private static readonly Cmd instance = new Cmd(); public static Cmd Instance { get { return instance; } } private string regsvr32 = "regsvr32 -s {0}";//-s 参数指定 regsvr32 安静运行,在成功注册/反注册DLL文件的前提下不显示结果提示框。 public void Regsvr32(string fileName) { string strcmd = string.Format(regsvr32, fileName); Execute(strcmd); } /// <summary> /// 使用cmd执行命令 /// </summary> /// <param name="strCmd"></param> /// <returns></returns> private void Execute(string strCmd) { ProcessStartInfo processStartInfo = new ProcessStartInfo() { FileName = "cmd.exe", UseShellExecute = false, RedirectStandardOutput = false, CreateNoWindow = true, Arguments = "/c " + strCmd }; Process myProcess = new Process() { StartInfo = processStartInfo }; myProcess.Start(); myProcess.Close(); } /// <summary> /// COM组件是否已经被注册 /// </summary> /// <param name="clsid"></param> /// <returns></returns> public bool IsRegistered(String clsid) { //参数检查 Debug.Assert(!String.IsNullOrEmpty(clsid), "clsid 不应该为空"); //设置返回值 Boolean result = false; //检查方法,查找注册表是否存在指定的clsid String key = String.Format(@"CLSID\{{{0}}}", clsid); RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(key); if (regKey != null) { result = true; } return result; } /// <summary> /// 反注册 /// </summary> /// <param name="file"></param> /// <returns></returns> public Boolean UnRegister(String file) { //参数检查 Debug.Assert(!String.IsNullOrEmpty(file), "file 不应该为空"); //设置返回值 Boolean result = false; //检查方法,查找注册表是否存在指定的clsid string fileFullName = "\"" + file + "\""; Process p = Process.Start("regsvr32", fileFullName + " /s /u"); if (p != null && p.HasExited) { Int32 exitCode = p.ExitCode; if (exitCode == 0) { result = true; } } return result; } } }
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2014-05-27 string类的常用方法