新版本.Net关于Process.Start的问题

.Net 开发中,试用 Process.Start() 来启动一个新进程,当我们传入的是具体文件或者链接的时候,系统也会根据默认打开方式打开对应的进程。但是在新版本的 .Net 中,试用 Process.Start() 来打开文件或者链接的时候,会抛出 System.ComponentModel.Win32Exception 的错误,提示系统找不到指定的文件。

解析

这和 Windows API 相关,在 Windows API 中对于启动进程有两个方法 CreateProcess/CreateProcessAShellExecute/ShellExecuteA ,分别用来响应 直接通过程序名来启动进程通过默认打开方式启动进程并且打开文件

.Net Framework 的运行时中,Process.Start() 可以做到两种启动进程方式都能正确响应,但是在 .Net 中,必须为 通过默认打开方式启动进程并且打开文件 显式地去指定 UseShellExecute = true ,这样运行时才会通过ShellExecute/ShellExecuteA 的方式,从用户的系统设置中,找到匹配的默认打开方式,进而启动对应的进程。不然运行时会调用 CreateProcess/CreateProcessA 启动传入的文件名,但是由于传入的属于存档文件或者超链接,就会抛出 System.ComponentModel.Win32Exception 的错误,提示系统找不到指定的文件。

发布时间:2024-10-24
其他阅读

WPF中开启虚拟化提高性能

WPF(Windows Presentation Foundation)是一个强大的框架,它能创建高度响应和美观的桌面应用程序。然而,当处理大量数据时,性能问题可能变得显著。为了解决这些问题,我们可以利用虚拟化来提升WPF应用的性能。

查看原文

Visual Studio 2022激活密钥

Visual Studio 2022 Pro 激活密钥:

查看原文

Apple网页中滚动效果

打开Apple官网查看iPhone页面,我们可以看到一个特殊效果,当你滚动鼠标时,页面不出现滚动效果,但内容却在变化。现在,基于 position : sticky 可以很容易实现这个效果。

查看原文

西华湿地公园

昆明周末好去处。

查看原文

Js文件上传

文件上传是一个前端比较常见的功能,无论是以前的MVC客户端,还是现代化SPA客户端中,但万变不离其宗,其内核基本不变,本文就此讨论简单文件上传(以图片为例子)。

查看原文