1

この質問は、少し前に尋ねられたこの最初の質問に関連しています。

抽出ツールを選択したので、指定されたコマンド ライン パラメーター ディレクトリとサブディレクトリを反復処理して、圧縮された .zip ファイルを抽出します。

private static void ExtractAll(DirectoryInfo _workingFolder) {
    if(_workingFolder == null) {
        Console.WriteLine("Répertoire inexistant.");
        return;
    }

    foreach (DirectoryInfo subFolder in _workingFolder.GetDirectories("*", SearchOption.AllDirectories)) 
        foreach(FileInfo zippedFile in subFolder.GetFiles("*.zip", SearchOption.AllDirectories)) {
            if(zippedFile.Exists) {
                ProcessStartInfo task = new ProcessStartInfo(@".\Tools\7za.exe", string.Format("x {0}", zippedFile.FullName));
                Process.Start(task);
            }
    }
}

しかし、7za プロセスを開始するたびに、Windows セキュリティの警告が表示されます。このような迷惑行為は避けたいので、質問させてください。

C# 内で「DOS」コマンド ラインを起動するときに Windows (XP) セキュリティ警告を回避するにはどうすればよいですか?

4

1 に答える 1

3

これはせいぜい推測ですが (試す時間がありません)、CreateNoWindow を使用してみてください。

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx

提案されたソリューションを使用した後のコードは次のとおりです。

private static void ExtractAll(DirectoryInfo _workingFolder) {
    if(_workingFolder == null) {
        Console.WriteLine("Répertoire inexistant.");
        return;
    }

    foreach (DirectoryInfo subFolder in _workingFolder.GetDirectories("*", SearchOption.AllDirectories)) 
        foreach(FileInfo zippedFile in subFolder.GetFiles("*.zip", SearchOption.AllDirectories)) {
            if(zippedFile.Exists) {
                Console.WriteLine(string.Format("Extraction du fichier : {0}", zippedFile.FullName));
                Process task = new Process();
                task.StartInfo.UseShellExecute = false;
                task.StartInfo.FileName = @".\Tools\7za.exe";
                task.StartInfo.Arguments = string.Format("x {0}", zippedFile.FullName);
                task.StartInfo.CreateNoWindow = true;
                task.Start();
                Console.WriteLine(string.Format("Extraction de {0} terminée", zippedFile.FullName));
                //ProcessStartInfo task = new ProcessStartInfo(@".\Tools\7za.exe", string.Format("x {0}", zippedFile.FullName));
                //Process.Start(task);
            }
    }
}
于 2010-06-08T15:01:54.240 に答える