C#通过代码注册COM组件
2024-08-25 15:16:15
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 == )
{
result = true;
}
}
return result;
}
}
}
最新文章
- YYModel 源码解读(二)之YYClassInfo.h (2)
- C#基础强化-继承与多态
- [django]用户认证中只允许登陆用户访问(网页安全问题)
- Java 判断字符串第一位和最后一位,并截取
- iOS: setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key name.
- ArrayAdapter与SimpleAdapter的使用
- 【bzoj1036】 ZJOI2008—树的统计Count
- jquery判断多选框是否选中
- Powerdesigner 导出Excel格式数据字典 导出Excel格式文件
- UML图示
- activity调用finish方法理解
- C++中const修饰基本数据类型、指针、引用、对象
- “互联网+”引发IT人才招工荒-新华网安徽频道
- IOS支付宝支付出现6002问题的解决办法
- 12-C语言字符串
- Hopfield神经网络实现污染字体的识别
- 无法SSH服务器的解决过程(openssh-daemon is stopped)
- 50道sql练习题和答案
- Google File System 学习
- uwp ,win10 post json