0

当我收到路径被拒绝的错误时,我试图从桌面上删除一个文件夹。我什至让我的 app.manifest 以管理员身份启动程序。现在使用下面的代码我可以成功删除文件夹,但这似乎没有必要。

  string folder = "c:\\users\\jim\\desktop\\Proto";
  ProcessStartInfo process = new ProcessStartInfo("cmd.exe", @"/C " + @"rmdir " + folder + " /s /q");
  process.Verb = "runas";
  Process p = Process.Start(process);
  p.WaitForExit();

我正在尝试使用...

  string folder = "c:\\users\\jim\\desktop\\Proto";
  Directory.Delete(folder, true);

是否可以使该方法“运行”?

4

3 回答 3

2

据我所知,只提升一个呼叫/命令是不可能的。您必须启动一个可能被 UAC 阻止的新进程。有些程序似乎不这样做(例如不同的 Windows 对话框),但它们只是在后台调用具有不同参数的另一个进程(或它们自己的可执行文件)。

除此之外:默认情况下,您应该可以完全访问自己桌面上的所有内容。或者您是否正在尝试修改其他用户的桌面?

于 2012-12-21T17:16:54.893 回答
1

首先,运行应用程序的用户应该能够在他们自己的桌面上创建一个文件夹。

如果是上述情况,请删除您放入清单中的内容,但不要使用硬编码路径

String desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

Directory.Delete(Path.Combine(desktopFolder,"proto");

如果正在为另一个其他用户删除此文件夹(并且 admin 是另一个用户,无论是否提升),那么您必须一直以提升的方式运行,(不是一个好主意),或者当您以提升的方式启动另一个进程时做高大上的事情的权利。

于 2012-12-21T17:25:25.980 回答
0

看看这个,它向您展示了如何以管理员用户身份运行单个方法

于 2012-12-21T17:18:35.757 回答