新版本.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
其他阅读

Apple中的模糊效果

本文主要介绍在前端里比较重要的一个效果——高斯模糊效果,也有人称为毛玻璃特效。在Mac和Windows系统样式上也都在使用模糊效果。下面聚焦于Web前端中的模糊效果开发。

查看原文

在ASP.NET Core中使用过滤器

ASP.NET Core是一个高性能的Web开发框架,过滤器(Filter)在ASP.NET Core中被用于路由方法之上,可以在路由方法执行前后完成一些额外的操作。本文将会介绍在ASP.NET Core中使用 IActionFilter 实现过滤器并读取路由方法中的参数。

查看原文

Linux中查看,添加,修改,删除用户和用户组

将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。某个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,登录时所属的为默认组,而其他组称为附加组。本文将会介绍在 Linux 中查看,添加,修改,删除用户和用户组,注意:权限管理非常重要,可能一不小心就导致系统无法登录,请谨慎操作。

查看原文

电脑版微信支持抢红包和发朋友圈了

微信迎来史诗级加强——支持抢红包,微信迎来史诗级加强——支持发布朋友圈。

查看原文

Open Graph优化SEO

Open Graph(OG)协议作为社交分享优化的核心技术,不仅决定了内容在社交媒体平台的展示效果,还间接影响搜索引擎优化(SEO)的表现。本文将从作用解析、核心标签配置到动态生成策略,全面介绍 Open Graph 的应用。

查看原文