猪头少年 - 云南AI专家 - 云南独立开发者
全部文章

Engineering note

新版本.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 的错误,提示系统找不到指定的文件。

继续阅读

从文章索引继续。

这篇文章暂未归入核心专题;你仍可从全部文章中找到下一篇相关内容。

选择一条专题路线

Keep reading

相关文章

2026 最新 Windows 桌面应用发布免费代码签名指南:上架 Microsoft Store,使用 MSIX 分发继续阅读 我为什么做 Winsaa继续阅读 计划、执行与反思:把多步任务变成可恢复过程继续阅读 知识库与检索增强:先让答案可追溯继续阅读

Next step

不要停在单篇文章。

沿主专题继续阅读,查看同一问题从概念到实战的完整路径。

选择一条专题路线