前言
ProcessStartInfo 是 System.Diagnostics 命名空间下的一个类,用于 配置新进程(如启动外部程序)的参数(如可执行文件路径、命令行参数、工作目录等)。它是 Process.Start() 方法的核心参数,比直接传递字符串命令更灵活和安全。
作用:
启动进程时精细控制(如设置参数、环境变量、工作目录)。
隐藏/显示窗口(后台执行或显示GUI)。
重定向输入/输出(与子进程交互)。
以不同用户身份运行(需配合用户名和密码)。
常用属性
FileName:要执行的程序路径(如 "notepad.exe" 或 "python")。
Arguments:传递给程序的命令行参数(如 "/arg1 value1")。
WorkingDirectory:进程的工作目录(默认当前目录)。
UseShellExecute:是否通过系统Shell启动(默认true,若需重定向输入输出需设为false)。
RedirectStandardInput/Output/Error:是否重定向标准输入/输出/错误(需UseShellExecute=false)。
CreateNoWindow:是否隐藏窗口(默认false)。
WindowStyle:窗口状态(Normal, Hidden, Minimized, Maximized)。
Verb:特殊操作(如 "runas" 以管理员身份运行)。
EnvironmentVariables:设置进程的环境变量。
使用方法
使用方式1:构造时直接设置
using System.Diagnostics;
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = "notepad.exe",
WindowStyle = ProcessWindowStyle.Maximized // 窗口最大化
};
Process.Start(startInfo);
使用方式2:调用
using System.Diagnostics;
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.UseShellExecute = true;
processInfo.FileName = "notepad.exe";
Process.Start(startInfo);
案例
例1:启动一个程序
using System.Diagnostics;
var startInfo = new ProcessStartInfo
{
FileName = "notepad.exe",
Arguments = "C:\\test.txt", // 打开指定文件
WorkingDirectory = "C:\\", // 设置工作目录
WindowStyle = ProcessWindowStyle.Maximized // 窗口最大化
};
Process.Start(startInfo);
例2:隐藏窗口并执行命令
var startInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "/c dir", // 执行`dir`命令
UseShellExecute = false,
CreateNoWindow = true // 不显示窗口
};
Process.Start(startInfo);
例3:以管理员身份运行
var startInfo = new ProcessStartInfo
{
FileName = "powershell.exe",
Verb = "runas", // 请求管理员权限
Arguments = "Restart-Service -Name 'MySQL'"
};
Process.Start(startInfo); // 会弹出UAC确认对话框