C# Windows Forms中Process.Start()调用报‘拒绝访问’错误求助
解决.NET Core/.NET 5+ WinForms中Process.Start打开文件夹报Access Denied的问题
问题原因
在.NET Core、.NET 5及更高版本的WinForms中,Process.Start(string)的默认UseShellExecute属性值为false,而.NET Framework中该值默认是true。当UseShellExecute=false时,系统会尝试将文件夹路径当作可执行文件直接运行,这显然不符合逻辑,最终触发了误导性的"Access is denied"错误。而控制台应用中默认的UseShellExecute行为和WinForms不同,所以能正常运行。
解决方案
方案1:显式设置UseShellExecute为true
使用ProcessStartInfo明确指定启用Shell执行,让系统通过shell打开文件夹,和.NET Framework的行为保持一致:
var startInfo = new ProcessStartInfo { FileName = @"D:\YourFolderPath", // 替换为你的目标文件夹路径 UseShellExecute = true }; Process.Start(startInfo);
或者更简洁的写法:
Process.Start(new ProcessStartInfo(@"D:\YourFolderPath") { UseShellExecute = true });
方案2:直接调用资源管理器打开
直接指定启动explorer.exe并传入文件夹路径,这种方式更直观:
Process.Start("explorer.exe", @"D:\YourFolderPath");
内容的提问来源于stack exchange,提问作者Mohammed Amer
相关产品推荐
相关产品推荐

