【问题标题】:C# Windows-Form-Application Process.Start() Gives "Access is denied" ErrorC# Windows-Form-Application Process.Start() 给出“访问被拒绝”错误
【发布时间】:2022-08-19 20:26:19
【问题描述】:

我在 C# Windows-Form-Application (WinForms) 上工作并使用了以下代码:

System.Diagnostics.Process.Start(\"x\");

其中 x 是应该打开的文件夹的路径(不在 C:\\ 中的本地文件夹)。

问题是在运行程序时它给了我“访问被拒绝”错误。

我在谷歌上搜索,但我没有找到如何解决这个问题。

注意:此代码适用于控制台应用程序和 Windows 窗体(.Net 框架)。

  • 文件夹不是进程(可执行文件)。您不能使用 Process.Start 来“启动”一个文件夹。
  • @蒂莫西G。不对。如果您传递一个文件夹,则文件资源管理器开始显示该文件夹
  • @史蒂夫说什么???这对我来说是个新闻。有趣...虽然在winforms中没有某种打开文件夹对话框吗?很久没有做winforms编码了。
  • 是的,有一个 OpenFileDialog 和一个 FolderBrowser 控件可用于各自的任务。 (在代码中获取文件名或文件夹名)。将文件夹路径传递给 Process.Start 将使用文件资源管理器打开该文件夹,仅此而已。接下来不会与您自己的代码进行交互。
  • 在 .Net 核心下 Process.Start() 将不是在资源管理器中启动文件夹路径 - 它会抛出访问被拒绝.

标签: c# windows visual-studio desktop-application desktop


【解决方案1】:

这似乎是一个标准权限问题。运行应用程序的帐户没有访问该文件夹的正确权限。如果您从 Visual Studio 调试,请尝试以管理员身份运行 VS。如果您正在运行应用程序的安装,则以管理员身份运行应用程序本身。

更新:

看起来像简单地使用文件夹路径调用 Process.Start 在 .net 核心中不起作用。在 .net core 中,您需要指定应用程序以及文件夹路径:

System.Diagnostics.Process.Start("explorer.exe", "[FolderPath]");

【讨论】:

  • 我已经试过了,但似乎.net核心不支持:(
  • 不知道.net core 不支持它是什么意思,它不是.net core 功能它是windows 功能。你到底尝试了什么?
  • 我的意思是上面有人说的“在.Net core Process.Start()下不会在资源管理器中启动文件夹路径 - 它会抛出访问被拒绝。 - Alex K. 1小时前”
  • 明白了,更新了我的答案
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2017-09-05
  • 1970-01-01
相关资源
最近更新 更多