c# - C# 使用自定义环境变量以管理员身份启动子进程(在 CMD 窗口中)
问题描述
我有一个包含一些 Windows SDK 可执行文件并在单独的 CMD 窗口中打开它们的程序。
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/C signtool.exe [args] & pause";
process.StartInfo.Verb = "runas";
process.Start();
现在,我已将 Windows SDK 文件夹添加到系统的 Path 环境变量中。有没有办法以编程方式将 Windows SDK 文件夹添加到用户的 Path 环境变量中,或者运行将 SDK 文件夹添加到特定 CMD 窗口的 Path 变量中的进程?
这是我需要添加到每个 CMD 窗口的 Path 变量的文件夹:
C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86
此子进程必须以管理员身份运行。它不需要接收子进程的输出。
解决方案
使用 aProcessStartInfo
及其Environment
属性实例来设置它。
var startInfo = new ProcessStartInfo();
var defaultPath = startInfo.Environment["PATH"];
var newPath = "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.16299.0\\x86" + ";" + defaultPath;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c set > D:\\env.txt";
startInfo.Verb = "runas";
startInfo.Environment["PATH"] = newPath;
startInfo.UseShellExecute = false; // required to use Environment variables
Process.Start(startInfo);
推荐阅读
- php - 数组与同一年合并
- firebase - 身份验证用户的firebase实时数据库规则
- node.js - 为什么 NodeJS 说数组是对象?
- javascript - jQuery/Javascript 计算月、周、日、小时、分钟和秒的两个日期之间的差异
- mysql - 使用每列的 isVisible 值实现数据库结构
- javascript - 内容固定时通过触摸或滚动导航
- reactjs - 在渲染到屏幕之前对内存中的视频加载做出反应
- ruby-on-rails - 无法在 Heroku 上的 R 中写入绘图的 png
- php - Laravel 从分页中获取所有项目的数据
- excel - Excel中具有3个条件的嵌套IF语句