当前位置: 首页 > news >正文

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中特定区域内的单元格才可点击 代码实现 首先&#xff0c;需要给el-table绑定单元格点击事件 <el-table :data"currTableData"borderstyle"width: 100%;"height"calc(100vh - 400px)"cell-clic…...

特种作业操作登高架设作业历年真题附答案

1.直接引起坠落的客观危险因素之平均温度低于&#xff08; &#xff09;℃。 A.10 B.3 C.5 答案:C 2.从事脚手架支搭作业的人员必须年满&#xff08; &#xff09;周岁。 A.18 B.20 C.22 答案:A 3.跨越架横杆有效部分的小头直径不…...

schedule-执行周期性任务

模块介绍 该模块主要用于python的任务调度&#xff0c;使用简便友好的python语法定期运行python函数或者一些其他的调用对象&#xff0c;这个模块就类似于windows的任务计划和linux的crontab&#xff0c;都是用于在服务器上周期性执行某段python脚本。 相较于linux的crontab对…...

python图片文件路径排序

解决用sord 排序文件路径乱序问题&#xff1a; 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横向对比

在光学跟踪系统领域&#xff0c;ART公司凭借其先进的技术和卓越的产品性能&#xff0c;一直受到市场的广泛关注。ARTTrack6/M、ARTTrack5和ART AT7-80作为ART公司的三款代表性产品&#xff0c;各自在不同的应用场景中发挥着重要作用。本文将对这三款产品进行纵向对比&#xff0…...

【Vue】Vue3.0(十三)中标签属性ref(加在普通标签上、加在组件标签上)、局部样式

上篇文章&#xff1a; 【Vue】Vue3.0 &#xff08;十二&#xff09;、watchEffect 和watch的区别及使用 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月18日20点56分 文章目录 基本…...

Linux系统基础-文件系统

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Linux系统基础-文件系统 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 回顾C语言…...

机器学习和深度学习常用的工具库

一、机器学习常用库 1. Scikit-learn 简介&#xff1a;一个基于Python的机器学习库&#xff0c;专注于经典的机器学习算法。特点&#xff1a; 提供了多种分类、回归、聚类和降维算法。具有统一的API&#xff0c;便于使用。集成了数据预处理、模型选择和评估等功能。 应用&…...

【unity小技巧】Unity6 LTS版本安装和一些修改和新功能使用介绍

文章目录 前言安装新功能变化1、官方推荐使用inputsystem进行输入控制2、修复了InputSystem命名错误导致listen被遮挡的bug3、自带去除unity启动画面logo功能4、unity官方的behavior行为树插件5、linearVelocity代替过时的velocity方法待续 完结 前言 2024/10/17其实unity就已…...

5种边界填充

目录 边界填充需要知道的两个东西什么算边界边界的范围是多少举例 复制填充反射法反射101法外包装法数值填充法原图代码最终效果 边界填充需要知道的两个东西 什么算边界 顾名思义&#xff1a;就是图片的最外边 边界的范围是多少 根据你自己的需要而设置 举例 这里我选择…...

鸿蒙网络编程系列7-TLS安全数据传输单向认证示例

1.TLS简介 TLS&#xff08;Transport Layer Security&#xff09;协议的前身是SSL&#xff08;Secure Socket Layer&#xff09;安全套接层协议&#xff0c;由Netscape公司于1994年提出&#xff0c;是一套网络通信安全协议。IETF&#xff08;The Internet Engineering Task Fo…...

LangGraph 源码分析 | BaseTool 模板类

文章目录 BaseTool 源码分析核心属性以 TavilySearchResults(BaseTool) 为例namedescriptionargs_schemaresponse_format查询选项属性 需要子类实现的抽象方法以 TavilySearchResults(BaseTool) 为例 核心方法arun()&#xff1a;run()的异步执行版本invoke()和ainvoke() BaseTo…...

vulnhub靶场之JOY

一.环境搭建 1.靶场描述 Does penetration testing spark joy? If it does, this machine is for you. This machine is full of services, full of fun, but how many ways are there to align the stars? Perhaps, just like the child in all of us, we may find joy in …...

intel和AMD突然联姻,这操作给我看傻了

要说现在的显卡一哥&#xff0c;那肯定非 NVIDIA 莫属&#xff0c;不仅仅是在 AI 领域是赚的盆满钵满&#xff0c;更是在游戏显卡领域把红蓝两家打的节节败退。 在 6000 系列尚能与之一战的 AMD 也认清了现实&#xff0c;在最近宣布了下一代 8000 系列显卡放弃高端显卡战争&…...

yolo_face_pose-DataBall 人脸关键点数据集 >> DataBall

数据集下载地址&#xff1a;ultralyticsyolo训练自定义人脸关键点训练和验证数据集资源-CSDN文库 数据集定义&#xff1a; ultralytics yolo 训练自定义人脸关键点训练和验证数据集 数据集格式&#xff1a;yolo 训练集数量&#xff1a;3295 验证集数量&#xff1a;120 类别&a…...

Unity 山水树木

本章节内容 1. Unity对3D游戏物体的简单操作&#xff1b; 2. 构建山水树木的场景 1. Unity 简易操作 1.1 新建3D游戏场景 1. 打开Unity Hub&#xff0c;点击 New Project &#xff08;新建项目&#xff09;按键&#xff0c;选择第二项 3D(Built-In Render Pipeline)&#xf…...

Redis 性能优化选择:Pika 的配置与使用详解

引言 在我们日常开发中 redis是我们开发业务场景中不可缺少的部分。Redis 凭借其内存存储和快速响应的特点&#xff0c;广泛应用于缓存、消息队列等各种业务场景。然而&#xff0c;随着数据量的不断增长&#xff0c;单节点的 Redis 因为内存限制和并发能力的局限&#xff0c;逐…...

【某农业大学计算机网络实验报告】实验三 IP数据报发送和转发流程

实验目的&#xff1a; &#xff08;1&#xff09;掌握基本的网络配置方法。 &#xff08;2&#xff09;观察 IP 数据报的发送和转发流程&#xff0c;掌握 IP 转发分组的原理。 实验器材&#xff1a; 一台Windows操作系统的PC机。 实验准备&#xff1a; 1&#xff0e;配置…...

Android13 添加运行时权限

在一些场景下&#xff0c;需要给app 添加运行时权限&#xff0c;这样就不需要在使用的时候再去点击授权。 直接上代码&#xff1a; --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.javab/services/core/java/com/android/server/pm…...

官方操刀占用仅6G,Win 11 LTSC详细安装、优化教程来了

前段时间微软发布 Win 11 年度重磅更新 24H2&#xff0c;顺便也带来了备受期待的 Win 11 2024 官方精简 LTSC&#xff08;老坛酸菜&#xff09;版。 Win 11 重磅更新发布&#xff0c;老坛酸菜版成了配角&#xff01; 简单来说&#xff0c;Win 11 LTSC 是微软针对企业用户推出…...