84 lines
2.8 KiB
C#
84 lines
2.8 KiB
C#
|
using System;
|
|||
|
using System.Diagnostics;
|
|||
|
using System.IO;
|
|||
|
using System.Security.Principal;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace HL_FristAidPlatform_Frame
|
|||
|
{
|
|||
|
public class RegFile
|
|||
|
{
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 注册DLL
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public static bool RegisterDll()
|
|||
|
{
|
|||
|
bool result = true;
|
|||
|
try
|
|||
|
{
|
|||
|
string dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "VCodecs.dll");//获得要注册的dll的物理路径
|
|||
|
if (!File.Exists(dllPath))
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
//拼接命令参数
|
|||
|
string startArgs = string.Format("/s \"{0}\"", dllPath);
|
|||
|
|
|||
|
Process p = new Process();//创建一个新进程,以执行注册动作
|
|||
|
p.StartInfo.FileName = "regsvr32";
|
|||
|
p.StartInfo.Arguments = startArgs;
|
|||
|
|
|||
|
//以管理员权限注册dll文件
|
|||
|
WindowsIdentity winIdentity = WindowsIdentity.GetCurrent(); //引用命名空间 System.Security.Principal
|
|||
|
WindowsPrincipal winPrincipal = new WindowsPrincipal(winIdentity);
|
|||
|
if (!winPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
|
|||
|
{
|
|||
|
p.StartInfo.Verb = "runas";//管理员权限运行
|
|||
|
}
|
|||
|
p.Start();
|
|||
|
p.WaitForExit();
|
|||
|
p.Close();
|
|||
|
p.Dispose();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
MessageBox.Show("注册DLL失败" + ex);
|
|||
|
result = false; //记录日志,抛出异常
|
|||
|
}
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 注册DLL
|
|||
|
/// </summary>
|
|||
|
/// <param name="strCmd"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public static string AutoRegCom(string strCmd)
|
|||
|
{
|
|||
|
string rInfo;
|
|||
|
try
|
|||
|
{
|
|||
|
Process myProcess = new Process();
|
|||
|
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");
|
|||
|
myProcessStartInfo.UseShellExecute = false;
|
|||
|
myProcessStartInfo.CreateNoWindow = true;
|
|||
|
myProcessStartInfo.RedirectStandardOutput = true;
|
|||
|
myProcess.StartInfo = myProcessStartInfo;
|
|||
|
myProcessStartInfo.Arguments = "/c " + strCmd;
|
|||
|
myProcess.Start();
|
|||
|
StreamReader myStreamReader = myProcess.StandardOutput;
|
|||
|
rInfo = myStreamReader.ReadToEnd();
|
|||
|
myProcess.Close();
|
|||
|
rInfo = strCmd + "\r\n" + rInfo;
|
|||
|
return rInfo;
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return ex.Message;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|