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法外包装法数值填充法原图代码最终效果 边界填充需要知道的两个东西 什么算边界 顾名思义:就是图片的最外边 边界的范围是多少 根据你自己的需要而设置 举例 这里我选择…...
Windows终极HEIC预览方案:免费解锁苹果照片缩略图
Windows终极HEIC预览方案:免费解锁苹果照片缩略图 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 还在为iPhone拍摄的…...
WinMerge对比日志和备份文件?用过滤器精准匹配,效率翻倍
WinMerge对比日志和备份文件?用过滤器精准匹配,效率翻倍 在日常运维和办公场景中,我们经常需要对比不同版本的日志文件或备份文件。比如app.log.1和app.log.2的差异分析,或者report_20240520.xlsx与report_20240521.xlsx的内容比对…...
【锂离子电池组的被动式电池均衡】电池组由两个并联的串联电池组成,每个并联串联都包含四个串联电池,目标是通过在电阻器上放电高SOC电池,直到所有电池的SOC相等附Simulink仿真
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &…...
Steam账号被盗,手机邮箱都失效?别慌!我用支付宝账单截图成功找回(附详细客服案件创建流程)
Steam账号终极找回指南:当手机邮箱全失效时的支付宝账单申诉法 凌晨三点,盯着屏幕上"未找到关联账户"的红色提示,手指在键盘上悬停了十分钟——这是许多Steam玩家遭遇账号全维度被盗时的真实噩梦。当盗号者不仅修改了密码…...
版本控制系统核心功能解析:从历史追踪到团队协作的四大基石
1. 项目概述:从ICO到VCS,一次版本控制的深度对话在软件开发的日常里,我们经常听到“版本控制”这个词,它就像是程序员们的时光机和后悔药。但具体到工具上,Git、SVN、Mercurial……选择很多,而“VCS ICO”这…...
如何通过编译优化与隐私增强实现浏览器性能飞跃:Thorium项目技术深度解析
如何通过编译优化与隐私增强实现浏览器性能飞跃:Thorium项目技术深度解析 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towa…...
Perplexity估值从3B美元缩水至1.8B?华尔街分析师闭门会议纪要首度流出(含5条未公开预警红线)
更多请点击: https://intelliparadigm.com 第一章:Perplexity估值缩水事件全景速览 2024年第三季度,AI搜索初创公司Perplexity在完成新一轮融资后,其内部估值从2023年底的10亿美元迅速回调至约7.5亿美元,引发全球科技…...
LibSVM在Matlab里的实战:从分类到回归,手把手调参与结果解读
LibSVM在Matlab里的实战:从分类到回归,手把手调参与结果解读 当你第一次在Matlab中成功运行LibSVM时,看到命令行窗口跳出"Accuracy 86.6667%"的那一刻,可能既兴奋又困惑。兴奋的是工具终于跑通了,困惑的是那…...
零碳园区绿电直供技术的挑战与解决方案
一、难点问题 二次系统+储能推高初投 篇幅有限仅展示了部分 根据650号文 ,绿电直连项目必须配置继电保护、安全稳定控制装置和通信设备等二次系统 ,以确保项目的安全性和稳定性。这些强制性配置显著增加了项目的初始投资成本。 专线造价与全周…...
Windows安卓驱动安装终极解决方案:一键自动化ADB Fastboot工具
Windows安卓驱动安装终极解决方案:一键自动化ADB Fastboot工具 【免费下载链接】Latest-adb-fastboot-installer-for-windows A Simple Android Driver installer tool for windows (Always installs the latest version) 项目地址: https://gitcode.com/gh_mirro…...
