[STAThread]
static void Main()
{
bool isRunone;
Mutex run = new Mutex(true, "QualityManagement", out isRunone);//创建一个互斥体,返回false表示已存在
if (isRunone)
{
run.ReleaseMutex();//释放 System.Threading.Mutex 一次:释放互斥体的所属权
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();//当前window用户
//创建Windows用户主题
Application.EnableVisualStyles();
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);//允许代码检查 Windows 用户的 Windows 组成员身份
//判断当前登录用户是否为管理员
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
Process p = new Process();//处理进程
p.StartInfo.FileName = "Regsvr32.exe";//注册表进程
p.StartInfo.Arguments = "/s " + System.Windows.Forms.Application.StartupPath + "\\report.dll";//路径中不能有空格
p.Start();
Process pa = new Process();
pa.StartInfo.FileName = "Regsvr32.exe";
pa.StartInfo.Arguments = "/s " + System.Windows.Forms.Application.ExecutablePath;//路径中不能有空格
pa.Start();//启动含有report.dll和本程序序可执行程序的进程
}
else
{
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
//设置运行文件
startInfo.FileName = "Regsvr32.exe";
//设置启动参数
startInfo.Arguments = "/s " + System.Windows.Forms.Application.StartupPath + "\\report.dll";
//设置启动动作,确保以管理员身份运行
startInfo.Verb = "runas";
//如果不是管理员,则启动UAC
System.Diagnostics.Process.Start(startInfo);
System.Diagnostics.ProcessStartInfo startInfoa = new System.Diagnostics.ProcessStartInfo();
//设置运行文件
startInfoa.FileName = "Regsvr32.exe";
//设置启动参数
startInfoa.Arguments = "/s " + System.Windows.Forms.Application.ExecutablePath;
//设置启动动作,确保以管理员身份运行
startInfoa.Verb = "runas";
//如果不是管理员,则启动UAC
System.Diagnostics.Process.Start(startInfoa);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}
else
{
System.Windows.Forms.MessageBox.Show("已经有一个品质异常管理系统的程序在运行了");
}
}