首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用环境变量启动过程

使用环境变量启动过程
EN

Stack Overflow用户
提问于 2016-08-26 12:46:54
回答 4查看 2.8K关注 0票数 3

我想用下面的路径启动一个进程。

ProgramFiles(X86)\Philips语音\设备控制中心PDCC.exe

当我将其输入控制台时,进程将按预期的方式启动,但当我尝试用代码进行操作时,会得到以下异常:

系统找不到指定的文件。

到目前为止,这是我的代码:

代码语言:javascript
运行
复制
var startInfo = new ProcessStartInfo("%ProgramFiles(x86)%\Philips Speech\Device Control Center PDCC.exe");
Debug.Assert(startInfo.EnvironmentVariables.ContainsKey("ProgramFiles(x86)")) //Is true
new Process(startInfo).Start(); //<- exception occures here

有没有人知道我是否可以通过给ProcessStartInfo类环境变量来直接完成这个任务,或者我必须在这样做之前解析它呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-26 12:51:49

代码语言:javascript
运行
复制
string path = Environment.ExpanEnvironmentVariables("%ProgramFiles(x86)%\Philips Speech\Device Control Center PDCC.exe");
var startInfo = new ProcessStartInfo(path);
new Process(startInfo).Start(); 

通过这种方式,您可以使用变量(例如"%ProgramFiles(x86)%),而不依赖于C:\或其他文件夹中的文件夹。

票数 7
EN

Stack Overflow用户

发布于 2016-08-26 12:52:39

您应该使用它获取程序文件的路径:

代码语言:javascript
运行
复制
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)

特殊文件夹枚举

票数 7
EN

Stack Overflow用户

发布于 2016-08-26 12:51:27

构造函数只是将fileName属性设置为您传递的内容,所以是的,您需要首先解析环境变量。

来自ProcessStartInfo的源代码

代码语言:javascript
运行
复制
public ProcessStartInfo(string fileName) {
     this.fileName = fileName;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39166722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档