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 == )
{
result = true;
}
}
return result;
}
}
}
C#通过代码注册COM组件的更多相关文章
- .net比较完美的动态注册com组件
.net中经常需要使用com组件,怎么样注册com组件呢? 一般想到的当然是直接通过系统cmd 调用regsvr32注册程序去注册,如下: regsvr32 name.dll 在.net中可以直接执行 ...
- vue 注册全局组件
注册全局组件有啥好处呢? 提高代码的复用性:哪里需要写哪里,贼方便,就写一个标签:减少代码量:可以再配合slot一起使用,咦~~,舒服 为了让整个项目的可读性,我创建一个文件统一存放全局组件 1.创建 ...
- Vue动态注册异步组件(非同一个工程的组件)
前言:最近在掘金逛的时候,无意中看到前滴滴前端架构黄轶大佬,看到了大佬分享的一篇博客滴滴 webapp 5.0 Vue 2.0 重构经验分享 ,对于其中第5个问题(异步加载的业务线组件,如何动态注册? ...
- vue注册全局组件
在项目开发中能不能自己写一个组件可以像iview或者element那样可以不必引用就可以直接用呢?答案是可以的. 首先,写一个组件mainHeader. 接着在vue中注册这个组件,代码如下: Vue ...
- BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启
对于解锁和锁屏这种用的比较频繁action,谷歌做了限制,必须手动用代码注册 直接上代码:这是注册广播(手动代码注册广播接收者) public class MainActivity extends A ...
- 解决 window server2008 r2 没有注册Ofiice组件的方法
解决 window server2008 r2 没有注册Ofiice组件的方法 .NET下在用Microsoft.Office.Interop.Excel及word 操作Excel和Word时, ...
- android91 代码注册广播接收者
Activity: package com.itheima.register; import android.os.Bundle; import android.app.Activity; impor ...
- 重新注册IE组件
重新注册IE组件:1.打开一个记事本文件. 2.将下面的命令复制到记事本文件中.regsvr32 comcat.dll /sregsvr32 CSSEQCHK.DLL /sregsvr32 shdoc ...
- Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
随机推荐
- thinkphp中curl的使用,常用于接口
/lib/action/PublicAction.class.php class PublicAction extends Action{ //curl,返回数组 public function ge ...
- [MySql] - 解决部署的服务器没有安装MySql Connector
1. 在C盘安装mysql的位置找到三个DLL,复制到Bin文件夹下. 2. 在配置文件的web下添加引用,PubulishKeyToken 根据版本来. <system.data> &l ...
- SQL对like 操作中的特殊字符处理方法
SQL对like 操作中的特殊字符处理方法: SQL Server查询过程中,单引号 ' 是特殊字符,所以在查询的时候要转换成双单引号 '' . 在like操作还有以下特殊字符:下划线_, ...
- Halcon学习笔记之缺陷检测(一)
例程:surface_scratch.hdev 说明:这个程序利用局部阈值和形态学处理提取表面划痕 代码中绿色部分为个人理解和注释,其余为例程中原有代码 *surface_scratch.hdev:e ...
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(一)
随着IOS7由之前UI的拟物化设计变为如今的扁平化设计,也许扁平化的时代要来了,当然我们是不是该吐槽一下,苹果什么时候也开始跟风了,自GOOGLE和微软界面扁平化过后,苹果也加入了这一队伍. Aval ...
- Framework 类库的事件编程
http://msdn.microsoft.com/zh-cn/library/aa663632.aspx 本页内容 EventHandler 委托 自定义的事件参数 参数化自定义事件 小结 本月的内 ...
- linux 下安装 nginx
安装nginx版本为1.7.5 一.下载nginx 官方地址:http://www.nginx.org/ 下载地址:http://nginx.org/download/ Nginx官网提供了三个类型的 ...
- Vim 配置 winmanager
问题描述: winmanager是vim中插件,可以方便的查看当前文件夹中文件,可以切换vim打开文件,非常方便 现在说明安装和使用winmanager 问题解决: (1)winmanager源文件 ...
- C# mongodb [下]
概述 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象(d ...
- 运用 DataContractSerializer 存储本地对象
public void Save(string filename,State state) { DataContractSerializer ds = new DataContractSerializ ...