Process.Start 报错

news/2024/11/16 22:46:30/

Process.Start 报错 System.Diagnostics.Process.StartWithShellExecuteEx

Process.Start 为什么会引发“系统找不到指定的文件”异常

Process.Start 报错 找不到路径 ,System.ComponentModel.Win32Exception:“系统找不到指定的文件。

问题1

在WinForm中可能是权限问题,设置文件夹和文件权限即可,也可能是NET版本太低了,只要把项目版本从net2.0  换成4.0以及以上,同时 解决方案平台设置位 AnyCPU 即可

//报错找不到路径 ,System.ComponentModel.Win32Exception:“系统找不到指定的文件。” ----只要把net2.0 换成4.0以及以上,同时 解决方案平台设置位 AnyCPU 即可
//Process.Start(@"F:\osk.exe");
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "osk.exe");
Process.Start(path);var p = new Process();p.StartInfo = new ProcessStartInfo(path){WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System),UseShellExecute = true,Verb = "runas" //管理员权限};p.Start();

问题2

在NET6 中可能是NET Framework 版本的最后执行的是StartWithShellExecuteEx而不是StartWithCreateProcess方法

造成这样的原因,是因为UseShellExecute在 .NET 6 上默认为 false:

public bool UseShellExecute { get; set; }

而在 .NET Framework 上默认为 true:

//
// 摘要:
// Gets or sets a value indicating whether to use the operating system shell to
// start the process.
//
// 返回结果:
// true if the shell should be used when starting the process; false if the process
// should be created directly from the executable file. The default is true.
[DefaultValue(true)]
[MonitoringDescription("ProcessUseShellExecute")]
[NotifyParentProperty(true)]
public bool UseShellExecute { get; set; }

问题3、

如果想使用参数的话,需要在 Arguments上设置参数

 var p = new Process();p.StartInfo = new ProcessStartInfo(path){WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System),UseShellExecute = true,Verb = "runas",Arguments="参数"};p.Start();


http://www.ppmy.cn/news/1030582.html

相关文章

【灵商课堂】知识的结束就是智慧的开始

心无挂碍,心无恐惧 1、知识不会通向智慧。 我们累积了关于很多事情的大量知识,但是要按照学到的知识去明智地行动,看起来几乎是不可能的。学校、学院和大学传授有关行为、宇宙、科学和各种技术的知识,但是这些教育中心很少帮助一个…

[Leetcode] [Tutorial] 多维动态规划(未完待续)

文章目录 62. 不同路径Solution 62. 不同路径 一个机器人位于一个 m ∗ * ∗ n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。 问总共有多少条不同的路径? 示例…

文盘Rust -- Mutex解决并发写文件乱序问题 | 京东云技术团队

在实际开发过程中,我们可能会遇到并发写文件的场景,如果处理不当很可能出现文件内容乱序问题。下面我们通过一个示例程序描述这一过程并给出解决该问题的方法。 use std::{fs::{self, File, OpenOptions},io::{Write},sync::Arc,time::{SystemTime, UNI…

【mysql并行批量删除死锁排查】

文章目录 背景表单和索引结构原因分析解决方案 背景 mysql批量删除并插入新数据的场景下,为提高执行效率,使用了多线程并发执行的方式。当然mysql建表时使用了分区(partition)机制,聚焦到我们这次讨论的问题&#xff…

Nature子刊 |肠道宏病毒组揭示百岁老人长寿秘诀

发表期刊:nature microbiology 发表时间:2023 影响因子:28.3 DOI: 10.1038/s41564-023-01370-6 研究背景 衰老是一种不可逆转的自然过程,随着年龄的增长,机体诸多方面出现功能性下降,与衰老相关的疾病&a…

【栈】394. 字符串解码

394. 字符串解码 解题思路 构造辅助栈stack 遍历字符串s的每一个字符c当c为数字的时候 将数字转化为数字multi当c是字母的时候直接在builder尾部添加c当c是[ 将Multi 入stack1 builder转换为字符串 入stack2 然后全部初始化将[之前的临时结果builder 入栈stack2 用来发现对应…

PLUS操作流程、应用与实践,多源不同分辨率数据的处理、ArcGIS的应用、PLUS模型的应用、InVEST模型的应用

PLUS模型是由中国地质大学(武汉)地理与信息工程学院高性能空间计算智能实验室开发,是一个基于栅格数据的可用于斑块尺度土地利用/土地覆盖(LULC)变化模拟的元胞自动机(CA)模型。PLUS模型集成了基于土地扩张分析的规则挖掘方法和基于多类型随机…

linux4.0新增32位ARM的系统调用

修改内核源码 Linux系统为每一个系统调用赋予一个系统调用号。当应用程序执行一个系统调用时,应用程序就可以知道执行和调用到哪个系统调用了,从而不会造成混乱。系统调用号一旦分配之后就不会有任何变更,否则已经编译好的应用程序就不能运行…