IRA*_*eas 14 c# win32exception process.start winforms
我在 C# 中有一个 winforms 应用程序,我必须在其中打开某个文件夹。我用
System.Diagnostics.Process.Start(pathToFolder);
Run Code Online (Sandbox Code Playgroud)
这导致以下异常:
System.ComponentModel.Win32Exception (0x80004005): 访问被拒绝
在 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
在 System.Diagnostics.Process.Start()
在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
在 MyApp.openLogFolderToolStripMenuItem_Click(Object sender, EventArgs e)
我已经检查了以下事项:
另一件事是,如果我使用Process.Start()
打开此文件夹中的文件,它会起作用。
谁能给我一个提示?
干杯
编辑
我的目标是在资源管理器中打开文件夹。的pathToFolder
是一样的东西H:\Something\App.Name\Log
Rao*_*Rao 13
根据 MSDN ( https://msdn.microsoft.com/en-us/library/53ezey2s(v=vs.110).aspx )System.Diagnostics.Process.Start(string)
运行文件或进程(因此不会打开文件夹)。要打开文件夹, https: //msdn.microsoft.com/en-us/library/h6ak8zt5(v = vs.110).aspx 建议您可以使用System.Diagnostics.Process.Start(string, string)
首先应该是浏览器的方式来执行此操作,总指挥官或类似的东西,第二个应该是一个参数,告诉使用的资源管理器做什么(打开文件夹pathToFolder
)。
我想某些系统变量存储了“默认文件夹查看器”的值,但我不知道在哪里。我会努力去做,然后带着答案回来。
希望它有帮助。
编辑:我做了一些快速挖掘并打开文件夹,以下应该可以解决问题:
System.Diagnostics.Process.Start(Environment.GetEnvironmentVariable("WINDIR") + @"\explorer.exe", pathToFolder);
Run Code Online (Sandbox Code Playgroud)
其中第一个参数是经典 Windows 资源管理器的路径,第二个参数是文件夹本身的实际路径。似乎寡妇本身并不拥有通往其他“文件夹查看器”(例如 Total Commander 等)的路径,因此这种方式可能不适用。
尝试这个:
var psi = new System.Diagnostics.ProcessStartInfo() { FileName = pathToFolder, UseShellExecute = true };
System.Diagnostics.Process.Start(psi);
Run Code Online (Sandbox Code Playgroud)