0

test フォルダー内のファイルが削除されないのはなぜですか?? どうすれば管理者アクセスを取得できますか??

namespace Delete
{
    using System;
    using System.Windows.Forms;
    using System.IO;

    public class Delete
    {
        public Delete()
        {
            if (Directory.Exists(@"C:\Program Files (x86)\test\"))
            {
                string[] filePaths = Directory.GetFiles(@"C:\Program Files (x86)\test\");
                foreach (string file in filePaths) { File.Delete(file); }
            }
        }
    }
}
4

3 に答える 3

3

戦略を再考する必要があります。

アプリケーション内からプログラムでファイルを追加/削除する場合は、別の場所に保存する必要があります (書き込み/削除などのために昇格するための管理者権限は必要ありません)。

  1. ユーザーのデータディレクトリ/あなたの会社/あなたのアプリケーションのように、または
  2. ユーザーのドキュメント/会社/アプリケーション

Program Files ディレクトリは、プログラムと共にインストールされるアプリケーション固有のファイル (DLL など) 用ですが、インストール/更新後は変更されません。

アプリケーション別のユーザーのデータ ディレクトリの例を次に示します。

public static DirectoryInfo ApplicationVersionDirectory()
{
    return new DirectoryInfo(System.Windows.Forms.Application.UserAppDataPath);
}
于 2012-04-24T19:00:28.343 に答える
2

これは UAC によるものです。したがって、右クリックして管理者として実行可能ファイルを実行する -> [管理者として実行] を実行するか、プログラムで実行する場合は、Windows 7 や Vista UAC - C# でのプログラムによる昇格の要求などの他の投稿を参照してください。

于 2012-04-24T18:40:47.790 に答える
0

「プログラムファイル」フォルダからファイルを削除するには、管理者としてアプリケーションを起動する必要があります。そうしないと、%PROGRAMFILES%にアクセスできなくなります。

現在のアプリを再起動して管理者として実行するためのサンプルコードは次のとおりです。

ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.FileName = Application.ExecutablePath;
proc.Verb = "runas";



try
            {

                Process.Start(proc);

            }

            catch

            {

                // The user refused the elevation.

                // Do nothing and return directly ...

                return;

            }

            Application.Exit();  // Quit itself
于 2012-04-24T18:44:53.790 に答える