C#通过System.Diagnostics.Process类启动外部进程。
非管理员权限进程打开需要管理员权限的进程时,可以通过触发UAC来执行提权操作.
1、通过ProcessStartInfo.Verb="runas"来触发UAC,执行提权;
2、UAC只能通过操作系统Shell启动进程来触发,所以,设置ProcessStartInfo.UseShellExecute=true;
---------------------------------------------------------------------------------------------------
- 定义 要打开的外部程序信息
/// <summary>
/// 外部程序信息
/// </summary>
[Serializable]
public class ProcessItem
{
//程序名
public string Name { get; set; }
//程序的绝对路径,若程序已在注册表中注册,则可省略路径,如:FullPath=notepad 可打开记事本。
public string FullPath { get; set; }
//任务管理器中的进程名
public string ProcessName { get; set; }
}
- 检查外部程序是否已经启动
private Process CheckProcess(ProcessItem p