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;
}
}
}

最新文章

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

热门文章

  1. 收起虚拟键盘的各种方法 -- IOS
  2. (ACM)C++ STL 训练(第一天)
  3. ECSHOP模糊分词搜索和商品列表关键字飘红功能
  4. 【软件工程-Teamwork 3】团队角色分配和团队贡献分分配规则
  5. iOS 10 因苹果健康导致闪退 crash-b
  6. java性能优化策略
  7. 被git extensions给坑了,Not owner 解决办法
  8. 2565: 最长双回文串 - BZOJ
  9. nginx 如何显示真实ip
  10. 【转】欧拉回路&amp;特殊图下的哈密顿回路题集