繁体   English   中英

即使将app.manifest设置为以管理员身份运行程序,也可以获得“对路径的访问……被拒绝”

[英]Getting “Access to path… denied” even when app.manifest is set to to run program as administrator

当我收到路径被拒绝的错误时,我正在尝试从桌面上删除文件夹。 我什至让我的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);

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

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

除此之外:默认情况下,您应该拥有对自己桌面上所有内容的完全访问权限。 还是您要修改其他用户的桌面?

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

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

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

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

如果要为另一个其他用户删除此文件夹(并且admin是另一个用户,则无论该用户是否具有提升权限),那么您必须一直以提升权限运行(这不是一个好主意),否则,您将以提升权限启动另一个进程做高架东西的权利。

看看这个 ,它表明你如何运行一个单一的方法,管理员用户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM