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 回答