Как избежать предупреждения безопасности Windows (XP) при запуске командной строки «DOS» в C #? - PullRequest
1 голос
/ 08 июня 2010

Этот вопрос относится к этому первоначальному вопросу , заданному недавно.

Теперь, когда я выбрал инструмент извлечения, я перебираю заданный параметр командной строкикаталог и подкаталоги для извлечения сжатых 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.Я хотел бы избежать такого раздражающего поведения, поэтому вот мой вопрос:

Как избежать предупреждения безопасности Windows (XP) при запуске командной строки «DOS» в C #?

1 Ответ

3 голосов
/ 08 июня 2010

В лучшем случае это предположение (нет времени попробовать), но, возможно, попробуйте использовать 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);
            }
    }
}
...