C#Process进程的使用,以及对ProcessInfo中所有的参数详细记录
目录
一、Process
二、ProcessInfo
2.1 FileName
2.2 Arguments
2.3 WorkingDirectory
2.4 CreateNoWindow
2.5 UseShellExecute
2.6 RedirectStandardInput
2.7 RedirectStandardOutput
2.8 RedirectStandardError
2.9 WindowStyle
2.10 Verb
2.11 LoadUserProfile
2.12 UserName
2.13 Password
2.14 Domain
2.15 ErrorDialog
2.16 ErrorDialogParentHandle
2.17 EnvironmentVariables
2.18 StandardInputEncoding
2.19 StandardOutputEncoding
2.20 StandardErrorEncoding
2.21 EnableRaisingEvents
三、获取当前进程的所有信息
四、通过Process进程,打开指定的URL
五、通过Process进程,执行一些exe后缀的文件
5.1 打开高级系统设置
5.2 打开任务管理器
5.3 打开Windows资源管理器
5.4 通过CMD命令行,ping某个IP地址
5.5 通过记事本打开某个txt文件
六、获取输出内容
6.1 输入java -version后获取输出内容
6.2 输入多条指令
一、Process
在C#中,可以使用System.Diagnostics命名空间下的Process类来启动、停止、监视进程。
二、ProcessInfo
2.1 FileName
- 类型:
string- 说明: 要启动的可执行文件的名称或路径。例如:
"notepad.exe",或者可以指定完整路径:"C:\\Windows\\System32\\notepad.exe"。- 备注: 如果可执行文件在
PATH环境变量中已定义,则只需指定文件名即可;否则需要提供完整路径。
2.2 Arguments
- 类型:
string- 说明: 启动可执行文件时要传递的命令行参数。多个参数时,用空格分隔。例如:
"-l -h".- 示例: 如果要打开 Notepad 并指定文件,可以使用
"notepad.exe"作为FileName,以及"example.txt"作为Arguments。
2.3 WorkingDirectory
- 类型:
string- 说明: 设置启动进程的工作目录。如果未指定,默认使用当前目录。
- 示例:
WorkingDirectory = @"C:\MyApp"
2.4 CreateNoWindow
- 类型:
bool- 说明: 如果为
true,则不会为新进程创建控制台窗口。适用于后台运行的进程或服务。- 默认值:
false- 备注: 对于需要隐藏的命令行应用或无 UI 的进程,可以将其设置为
true。
2.5 UseShellExecute
- 类型:
bool- 说明: 决定是否使用操作系统的 Shell 执行启动过程。如果为
true,则使用 Shell 启动程序(可以启动任何类型的文件);如果为false,则直接运行可执行文件。- 默认值:
true- 备注: 如果你需要重定向标准输入、输出或错误流,必须将此属性设置为
false。
2.6 RedirectStandardInput
- 类型:
bool- 说明: 决定是否将新进程的标准输入流重定向到父进程,以便父进程可以写入输入数据。
- 默认值:
false- 备注: 需将
UseShellExecute设置为 true才能使用此属性。
2.7 RedirectStandardOutput
- 类型:
bool- 说明: 决定是否将新进程的标准输出重定向到父进程,以便父进程可以读取输出数据。
- 默认值:
false- 备注: 需将
UseShellExecute设置为 true才能使用此属性。
2.8 RedirectStandardError
- 类型:
bool- 说明: 决定是否将新进程的标准错误重定向到父进程,以便父进程可以读取错误信息。
- 默认值:
false- 备注: 需将
UseShellExecute设置为 true才能使用此属性。
2.9 WindowStyle
- 类型:
ProcessWindowStyle- 说明: 指定新进程的窗口显示状态。可以选择:
Normal:正常显示窗口。Hidden:隐藏窗口。Minimized:窗口最小化。Maximized:窗口最大化。- 默认值:
Normal- 示例:
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
2.10 Verb
- 类型:
string- 说明: 指定要使用的动作(或谓词)。常见谓词有
"open"、"print"、"edit"等,适用于文件类型关联操作。例如:你可以使用"print"来打印文档,或使用"edit"来编辑文件。- 示例:
process.StartInfo.Verb = "print";
2.11 LoadUserProfile
- 类型:
bool- 说明: 指定是否加载用户配置文件。当
UseShellExecute为false时可用。如果为true,进程将加载用户的配置文件(例如环境变量和注册表配置)。- 默认值:
false- 备注: 该属性通常用于启动以不同用户身份运行的进程。
2.12 UserName
- 类型:
string- 说明: 以特定用户的身份启动进程。需要同时提供
Password。- 备注:
UseShellExecute必须为false。
2.13 Password
- 类型:
SecureString- 说明: 与
UserName配合使用,指定运行进程时的用户密码。- 备注:
UseShellExecute必须为false。
2.14 Domain
- 类型:
string- 说明: 指定用于启动进程的域(如果用户属于某个域)。
- 备注: 该属性通常与
UserName一起使用,指定进程以不同域用户身份运行。
2.15 ErrorDialog
- 类型:
bool- 说明: 如果为
true,当启动的进程无法启动时,会显示一个错误对话框。- 默认值:
false
2.16 ErrorDialogParentHandle
- 类型:
IntPtr- 说明: 设置显示错误对话框时的父窗口句柄。通常和
ErrorDialog一起使用。
2.17 EnvironmentVariables
- 类型:
StringDictionary- 说明: 提供要传递给新进程的环境变量集合。可以向新进程传递特定的环境变量,而不是使用父进程的环境变量。
2.18 StandardInputEncoding
- 类型:
Encoding- 说明: 设置标准输入流的编码。
- 备注:
RedirectStandardInput必须设置为true。
2.19 StandardOutputEncoding
- 类型:
Encoding- 说明: 设置标准输出流的编码。
- 备注:
RedirectStandardOutput必须设置为true。
2.20 StandardErrorEncoding
- 类型:
Encoding- 说明: 设置标准错误流的编码。
- 备注:
RedirectStandardError必须设置为true。
2.21 EnableRaisingEvents
- 类型:
bool- 说明: 指定是否在进程退出时向父进程触发
Exited事件。- 默认值:
false- 备注: 设置为
true后,可以通过订阅进程的Exited事件来捕获进程退出。
三、获取当前进程的所有信息
示例
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;// 获取当前进程的所有信息
Process currentProcess = Process.GetCurrentProcess();
// 输出当前进程的详细信息
Console.WriteLine("=== 当前进程信息 ===");
Console.WriteLine($"进程名: {currentProcess.ProcessName}");
Console.WriteLine($"进程ID: {currentProcess.Id}");
Console.WriteLine($"进程句柄: {currentProcess.Handle}");
Console.WriteLine($"启动时间: {currentProcess.StartTime}");
Console.WriteLine($"优先级: {currentProcess.BasePriority}");
Console.WriteLine($"物理内存使用量: {currentProcess.WorkingSet64 / 1024 / 1024} MB");
Console.WriteLine($"虚拟内存使用量: {currentProcess.VirtualMemorySize64 / 1024 / 1024} MB");
Console.WriteLine($"用户处理器时间: {currentProcess.UserProcessorTime}");
Console.WriteLine($"总处理器时间: {currentProcess.TotalProcessorTime}");
Console.WriteLine($"启动文件名: {currentProcess.MainModule.FileName}");
Console.WriteLine($"当前目录: {Environment.CurrentDirectory}");// 你还可以获取更多信息,例如:
// 打开的句柄数、线程数、是否响应、CPU 使用率等等。
Console.WriteLine($"线程数: {currentProcess.Threads.Count}");
Console.WriteLine($"是否响应: {currentProcess.Responding}");
Console.WriteLine($"模块数: {currentProcess.Modules.Count}");
四、通过Process进程,打开指定的URL
通过浏览器打开百度官网
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string url = @"www.baidu.com";
Process process = new Process();
process.StartInfo.FileName = url;
process.StartInfo.UseShellExecute = true;
process.Start();
process.Close();
通过浏览器打开腾讯官网
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string url = @"www.tencent.com";
Process process = new Process();
process.StartInfo.FileName = url;
process.StartInfo.UseShellExecute = true;
process.Start();
process.Close();
五、通过Process进程,执行一些exe后缀的文件
5.1 打开高级系统设置
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string exePath = @"C:\Windows\System32\SystemPropertiesAdvanced.exe";
Process process = new Process();
process.StartInfo.FileName = exePath;
process.StartInfo.UseShellExecute = true;
process.Start();
process.Close();
5.2 打开任务管理器
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string exePath = @"taskmgr.exe";
Process process = new Process();
process.StartInfo.FileName = exePath;
process.StartInfo.UseShellExecute = true;
try
{process.Start();process.Close();
}
catch (Exception ex)
{Console.WriteLine(ex.Message); ;
}
5.3 打开Windows资源管理器
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string exePath = @"explorer.exe";
Process process = new Process();
process.StartInfo.FileName = exePath;
process.StartInfo.UseShellExecute = true;
try
{process.Start();process.Close();
}
catch (Exception ex)
{Console.WriteLine(ex.Message); ;
}
5.4 通过CMD命令行,ping某个IP地址
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string exePath = @"ping.exe";
Process process = new Process();
process.StartInfo.FileName = exePath;
process.StartInfo.Arguments = "127.0.0.1";
process.StartInfo.UseShellExecute = true;
try
{process.Start();process.Close();
}
catch (Exception ex)
{Console.WriteLine(ex.Message); ;
}
5.5 通过记事本打开某个txt文件
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;string exePath = @"notepad.exe";
Process process = new Process();
process.StartInfo.FileName = exePath;
process.StartInfo.Arguments = "test.txt";
process.StartInfo.UseShellExecute = true;
try
{process.Start();process.Close();
}
catch (Exception ex)
{Console.WriteLine(ex.Message); ;
}
六、获取输出内容
6.1 输入java -version后获取输出内容
前提:JDK的变量已经写入到系统的环境变量中
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;ProcessStartInfo processStartInfo = new ProcessStartInfo()
{WorkingDirectory = @"C:\",FileName = "cmd.exe", // 设置要启动的程序为 cmdArguments = "/c java -version", // /k 表示执行完命令后保持 CMD 窗口打开 UseShellExecute = false, // 允许使用操作系统外壳启动进程CreateNoWindow = true, // 让 CMD 窗口可见RedirectStandardError = true, // 错误输出流RedirectStandardOutput = true, // 标准输出流
};
// 启动进程
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();
//process.WaitForExit();
string output = process.StandardError.ReadToEnd();
string error = process.StandardError.ReadToEnd();
Console.WriteLine("标准输出流");
Console.WriteLine(output);
Console.WriteLine("错误输出流");
Console.WriteLine(error);
StringReader reader = new StringReader(output);
string firstLine = reader.ReadLine();
if (firstLine.Contains("java version"))
{Console.WriteLine("java已安装");Console.WriteLine($"java的版本为:{firstLine}");
}
else
{Console.WriteLine("java未安装");
}
输出样例

6.2 输入多条指令
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;ProcessStartInfo processStartInfo = new ProcessStartInfo()
{WorkingDirectory = @"C:\",FileName = "cmd.exe",RedirectStandardInput = true,RedirectStandardOutput = true,RedirectStandardError = true,UseShellExecute = false,CreateNoWindow = false,Verb = "runas"
};
// 启动进程
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();
// 获取标准输入流
using (var sw = process.StandardInput)
{if (sw.BaseStream.CanWrite){// 输入多行命令sw.WriteLine("java");sw.WriteLine("javac");sw.WriteLine("exit"); }
}
string output = process.StandardError.ReadToEnd();
string error = process.StandardError.ReadToEnd();
Console.WriteLine("标准输出流");
Console.WriteLine(output);
if (!string.IsNullOrEmpty(error))
{Console.WriteLine("错误输出流");Console.WriteLine(error);
}
样例输出

相关文章:
C#Process进程的使用,以及对ProcessInfo中所有的参数详细记录
目录 一、Process 二、ProcessInfo 2.1 FileName 2.2 Arguments 2.3 WorkingDirectory 2.4 CreateNoWindow 2.5 UseShellExecute 2.6 RedirectStandardInput 2.7 RedirectStandardOutput 2.8 RedirectStandardError 2.9 WindowStyle 2.10 Verb 2.11 LoadUserProfil…...
STM32中的RAM和ROM分别是什么
RAM(Random Access Memory,随机存取存储器)和ROM(Read-Only Memory,只读存储器)是计算机系统中的两种常见存储器类型,它们各自有不同的功能和用途。 1. RAM(内存) 定义…...
Spring--1
spring是一个轻量级的,采用IOC与AOP编程思想的java后端开发框架,简化了企业级的应用开发。 Spring体系 数据访问层,Web层,配置中心,测试区 IOC 控制反转,将创建对象的控制权交由Spring框架,需…...
【Flutter】页面布局:流式布局(Wrap、Flow)
在移动应用开发中,布局是非常重要的一部分,尤其是当我们需要处理动态或自适应的内容时。Flutter 提供了几种布局方式来帮助开发者处理复杂的 UI 场景,其中 Wrap 和 Flow 是常用的流式布局组件。它们在处理多个子组件时表现优越,尤…...
Delphi数据字典TDictionary
在 Delphi 中,创建一个数据字典通常意味着使用一种结构来存储键值对。Delphi 没有内建的字典类型,但你可以使用 TStringList 从 Classes 单元作为一个简单的键值对存储,或者你可以使用更复杂的第三方容器,如 TDictionary 从 Gener…...
VsCode 如何自定义代码片段(Code Snippet)
前言 在现代前端开发中,提高工作效率是每个开发者的追求。Visual Studio Code(Vscode)作为一款强大的代码编辑器,提供了许多让开发者高效编程的功能,其中自定义代码片段(Code Snippet)便是一个…...
Linux服务器前后端项目部署vue+springboot—搭建服务器上的运行环境(JDK、Redis、MySQL、Nginx)
Linux服务器前后端项目部署—①搭建服务器上的运行环境 一、系统参数信息和使用工具 1、服务器信息 华为云 CenteOS7.8 64 配置信息:2核4G 2、使用工具 Xshell6 二、环境安装和配置 (一)JDK的下载和安装 1、创建一个新目录或者进入目…...
随记:有关idea中jdk版本
第一个地方:这个可能就是你整个项目的jdk版本的使用,你改了这里大概率可以改了 第二个地方: 就是 有关maven项目的 pom文件 一开始我的第一地方用的是 17 但是这里用的是8 但是运行的时候还是 17 这里可能是 maven的 项目这个地方只是对…...
【算法篇】贪心类(1)(笔记)
目录 一、理论基础 1. 大纲 2. 求解步骤 二、Leetcode 题目 1. 分发饼干 2. 摆动序列 3. 最大子序和 4. 买卖股票的最佳时机 II 5. 跳跃游戏 6. 跳跃游戏 II 7. K 次取反后最大化的数组和 8. 加油站 9. 分发糖果 一、理论基础 1. 大纲 2. 求解步骤 将问题分解为…...
el-select 可搜索、多选状态遮挡住搜索框
el-select 可搜索多选状态遮挡住搜索框 最近在使用 element-ui 中 el-select组件遇到一个问题, 我们需求可以多选,也可以输入搜索, 当鼠标在边框时才是输入搜索状态,通过下面gif动图可发现鼠标经过边框时,才显示清空图…...
el-table中实现可选表格区域的鼠标事件检测
背景描述 vue3element plus想要实现el-table中特定区域内的单元格才可点击 代码实现 首先,需要给el-table绑定单元格点击事件 <el-table :data"currTableData"borderstyle"width: 100%;"height"calc(100vh - 400px)"cell-clic…...
特种作业操作登高架设作业历年真题附答案
1.直接引起坠落的客观危险因素之平均温度低于( )℃。 A.10 B.3 C.5 答案:C 2.从事脚手架支搭作业的人员必须年满( )周岁。 A.18 B.20 C.22 答案:A 3.跨越架横杆有效部分的小头直径不…...
schedule-执行周期性任务
模块介绍 该模块主要用于python的任务调度,使用简便友好的python语法定期运行python函数或者一些其他的调用对象,这个模块就类似于windows的任务计划和linux的crontab,都是用于在服务器上周期性执行某段python脚本。 相较于linux的crontab对…...
python图片文件路径排序
解决用sord 排序文件路径乱序问题: image_files 是 图片文件路径列表[pythonProject/video2img/1.jpg,pythonProject/video2img/2.jpg,.......] image_files.sort(keylambda x: int(x.split(/)[-1].split(.)[0]))...
ARTTrack6/M、ARTTrack5、ART AT7-80横向对比
在光学跟踪系统领域,ART公司凭借其先进的技术和卓越的产品性能,一直受到市场的广泛关注。ARTTrack6/M、ARTTrack5和ART AT7-80作为ART公司的三款代表性产品,各自在不同的应用场景中发挥着重要作用。本文将对这三款产品进行纵向对比࿰…...
【Vue】Vue3.0(十三)中标签属性ref(加在普通标签上、加在组件标签上)、局部样式
上篇文章: 【Vue】Vue3.0 (十二)、watchEffect 和watch的区别及使用 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年10月18日20点56分 文章目录 基本…...
Linux系统基础-文件系统
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Linux系统基础-文件系统 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 回顾C语言…...
机器学习和深度学习常用的工具库
一、机器学习常用库 1. Scikit-learn 简介:一个基于Python的机器学习库,专注于经典的机器学习算法。特点: 提供了多种分类、回归、聚类和降维算法。具有统一的API,便于使用。集成了数据预处理、模型选择和评估等功能。 应用&…...
【unity小技巧】Unity6 LTS版本安装和一些修改和新功能使用介绍
文章目录 前言安装新功能变化1、官方推荐使用inputsystem进行输入控制2、修复了InputSystem命名错误导致listen被遮挡的bug3、自带去除unity启动画面logo功能4、unity官方的behavior行为树插件5、linearVelocity代替过时的velocity方法待续 完结 前言 2024/10/17其实unity就已…...
5种边界填充
目录 边界填充需要知道的两个东西什么算边界边界的范围是多少举例 复制填充反射法反射101法外包装法数值填充法原图代码最终效果 边界填充需要知道的两个东西 什么算边界 顾名思义:就是图片的最外边 边界的范围是多少 根据你自己的需要而设置 举例 这里我选择…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果