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

私の知る限り、1つの呼び出し/コマンドだけを昇格させることは不可能です。UACによってブロックされる可能性のある新しいプロセスを起動する必要があります。一部のプログラムはそうではないように見えますが(たとえば、異なるWindowsダイアログ)、バックグラウンドで異なるパラメーターを使用して別のプロセス(または独自の実行可能ファイル)を呼び出すだけです。

それ以外に:デフォルトでは、自分のデスクトップ上のすべてに完全にアクセスできる必要があります。または、他のユーザーのデスクトップを変更しようとしていますか?

于 2012-12-21T17:16:54.893 に答える
1

まず、アプリケーションを実行しているユーザーは、自分のデスクトップにフォルダーを作成できる必要があります。

上記の場合は、マニフェストに入れたものを削除しますが、ハードコードされたパスは使用しないでください

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

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

このフォルダーが別のユーザーのために削除されている場合(および管理者が昇格されているかどうかに関係なく、管理者が昇格されているかどうかに関係なく)、常に昇格された状態で実行する必要があります(お勧めできません)。高架のものを行う権利。

于 2012-12-21T17:25:25.980 に答える
0

これを見てください、それは管理者ユーザーとして単一のメソッドを実行する方法を示しています

于 2012-12-21T17:18:35.757 に答える