/// <summary>
/// 检测ocx是否注册
/// </summary>
/// <param name="ClassId">注册表中的ID</param>
/// <returns></returns>
private bool CheckRegistredOcx(string ClassId)
{
Microsoft.Win32.RegistryKey Regkey =
Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ClassId);
if (Regkey != null)
{
return true;
}
else
{
return false;
}
}
//xxx.ocx 插件名称
private void OnRegisterPrisonOcx()
{
try
{
string str = @"C:\Windows\System32\regsvr32.exe " +
System.Windows.Forms.Application.StartupPath + @"\ocx\xxx.ocx";
Program.g_LogRecord.GetLogger(str);
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "C:\\Windows\\System32\\cmd.exe";
p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
p.StartInfo.CreateNoWindow = true;//不显示程序窗口
p.StartInfo.Verb = "RunAs";//以管理员的身份
p.Start();//启动程序
//向cmd窗口发送输入信息
p.StandardInput.WriteLine(str + "&exit");
p.StandardInput.AutoFlush = true;
//获取cmd窗口的输出信息
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();//等待程序执行完退出进程
p.Close();
}
catch(Exception ex)
{
string szInfo = ex.Message.ToString();
}
}