当我收到路径被拒绝的错误时,我正在尝试从桌面删除文件夹。我甚至让我的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);
是否可以将该方法设为“runas”?
答案 0 :(得分:2)
据我所知,只提升一个呼叫/命令是不可能的。您必须启动可能被UAC阻止的新进程。有些程序似乎不这样做(例如不同的Windows对话框),但它们只是在后台使用不同的参数调用另一个进程(或它们自己的可执行文件)。
除此之外:默认情况下,您应该可以完全访问自己桌面上的所有内容。或者您是否正在尝试修改其他用户的桌面?
答案 1 :(得分:1)
首先,运行应用程序的用户应该能够在自己的桌面上创建一个文件夹。
如果以上是这种情况摆脱你放入清单但不使用硬编码路径的东西
String desktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
Directory.Delete(Path.Combine(desktopFolder,"proto");
如果正在为另一个其他用户删除此文件夹(并且管理员是另一个用户,无论是否提升),那么你必须一直以高架运行(不是一个好主意),或者当你启动另一个用户时提升权限的过程。
答案 2 :(得分:0)
查看this,它会向您展示如何以管理员用户身份运行单个方法