C#下使用Process打开CMD命令,提示devcon不是内部或外部命令

xiaov6 2018-12-07 02:13:41
如题,直接在CMD下输入devcon命令可行,编辑.bat文件也可行
但是直接C#调用 就提示不是内部或者外部命令,也尝试过提升管理员权限,都不能解决。
且用C#打开的CMD窗口,输入devcon命令测试,也不可行,有没有大神遇到过类似的问题。
...全文
3084 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq276183183 2019-06-14
  • 打赏
  • 举报
回复
刚好今天也遇到这个问题,胖叔叔回答是正解,我补充一下。 我们在用Process类时,FileName属性一般设定为"cmd.exe",这时候我们第三方软件调用,由于没法加载环境变量,导致找不到cmd.exe。所以,要用全路径@"C:\Windows\System32\cmd.exe"。 如下设置,实测有效。 Process p = new Process(); p.StartInfo.FileName = @"C:\Windows\System32\cmd.exe"; //设定程序名
xiaov6 2018-12-10
  • 打赏
  • 举报
回复
引用 2 楼 xomix 的回复:
这就是因为当年的DOS现在已经不跟大家说导致的一些信息缺失导致的问题了。 首先我们说一个CMD窗口也就是一个command.com(dos)启动后他是有一些默认配置信息的: path就是其中之一,如果不配置path那么所有的外部命令(command内置一些内部命令,除此之外的exe、com、bat等都是外部命令)都必须输入全部路径才能正确访问。 然后我们说说windows不论你运行还是开始菜单点击cmd,都是默认加载系统配置中的path的,配置位置见下图: 但是当你使用第三方程序启动的cmd,就不会加载这些默认信息了。 所以就这么简单,你要么在加载cmd的时候赋予path,要么使用绝对路径调用外部命令。
谢谢
  • 打赏
  • 举报
回复
这就是因为当年的DOS现在已经不跟大家说导致的一些信息缺失导致的问题了。 首先我们说一个CMD窗口也就是一个command.com(dos)启动后他是有一些默认配置信息的: path就是其中之一,如果不配置path那么所有的外部命令(command内置一些内部命令,除此之外的exe、com、bat等都是外部命令)都必须输入全部路径才能正确访问。 然后我们说说windows不论你运行还是开始菜单点击cmd,都是默认加载系统配置中的path的,配置位置见下图: 但是当你使用第三方程序启动的cmd,就不会加载这些默认信息了。 所以就这么简单,你要么在加载cmd的时候赋予path,要么使用绝对路径调用外部命令。
xuzuning 2018-12-07
  • 打赏
  • 举报
回复 1
带上全路径

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧