From 4b69b52067fd2f5fb8c852a9a4003675294bd60e Mon Sep 17 00:00:00 2001
From: lhyqy5 <lhyqy5@gmail.com>
Date: Wed, 25 Feb 2015 16:51:30 +0800
Subject: [PATCH] add file busy check

---
 .../Source/SoftCertPolicyAppender/Program.cs  | 50 ++++++++++++++-----
 1 file changed, 37 insertions(+), 13 deletions(-)

diff --git a/Windows/Tools/SoftCertPolicyAppender/Source/SoftCertPolicyAppender/Program.cs b/Windows/Tools/SoftCertPolicyAppender/Source/SoftCertPolicyAppender/Program.cs
index 5a61be9..9ff0037 100644
--- a/Windows/Tools/SoftCertPolicyAppender/Source/SoftCertPolicyAppender/Program.cs
+++ b/Windows/Tools/SoftCertPolicyAppender/Source/SoftCertPolicyAppender/Program.cs
@@ -1,4 +1,5 @@
 using System;
+using System.IO;
 using System.Linq;
 using System.Security.Cryptography.X509Certificates;
 
@@ -56,21 +57,44 @@ CertFiles:
                     Console.Write("{0}.", i + 1);
                     Console.ResetColor();
 
-                    switch (flag)
+                    var retry = false;
+                    do
                     {
-                        case 0:
-                            SoftwareRestrictionPolicyController.AddCertRule(cert);
-                            Console.Write("Add cert policy for ");
-                            break;
-                        case 1:
-                            SoftwareRestrictionPolicyController.RemoveCertRule(cert);
-                            Console.Write("Remove cert policy for ");
-                            break;
-                    }
+                        try
+                        {
+                            switch (flag)
+                            {
+                                case 0:
+                                    SoftwareRestrictionPolicyController.AddCertRule(cert);
+                                    Console.Write("Add cert policy for ");
+                                    break;
+                                case 1:
+                                    SoftwareRestrictionPolicyController.RemoveCertRule(cert);
+                                    Console.Write("Remove cert policy for ");
+                                    break;
+                            }
 
-                    Console.ForegroundColor = ConsoleColor.Yellow;
-                    Console.WriteLine("{0}({1})", cert.Subject, cert.Thumbprint);
-                    Console.ResetColor();
+                            Console.ForegroundColor = ConsoleColor.Yellow;
+                            Console.WriteLine("{0}({1})", cert.Subject, cert.Thumbprint);
+                            Console.ResetColor();
+                        }
+                        catch (FileLoadException ex)
+                        {
+                            Console.Write(ex.Message+" Please select retry ,ignore or abort?[R|i|a]:");
+                            var select=  (Console.ReadLine()??"").ToLower();
+                            switch (select)
+                            {
+                                case "i":
+                                    break;
+                                case "a":
+                                    return;
+                                default:
+                                    retry = true;
+                                    break;
+                            }
+                   
+                        }
+                    } while (retry);
                 }
                 catch (Exception e)
                 {
-- 
GitLab