代码之家  ›  专栏  ›  技术社区  ›  Will Marcouiller

在C内启动“DOS”命令行时,如何避免Windows(XP)安全警告?

  •  1
  • Will Marcouiller  · 技术社区  · 14 年前

    这个问题与 this initial question 刚才问过。

    现在,我已经选择了解压工具,我正在迭代给定的命令行参数目录和子目录,以解压压缩的.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)安全警告?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Will Marcouiller    14 年前

    这充其量只是一个猜测(没有时间尝试),但是否可以尝试使用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);
                }
        }
    }
    
    推荐文章