2011-11-04 37 views
3

我爲應用程序添加更新程序(Myapp.exe)。當我啓動Myapp.exe時,它會檢查新的可用版本並根據用戶指令將其下載到Windows臨時目錄。將更新下載到Temp目錄後,新程序replacer.exe運行負責獲取Myapp.exe,終止其進程,刪除Myapp.exe並從Temp中複製新版本(Myapp.exe)目錄複製到Myapp.exe舊路徑。 replacer.exe有以下代碼。如何解決System.Unauthorized訪問異常?

class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      {      
       Process myProcess = Process.GetProcessesByName("Myapp")[0];  
       myProcess.Kill(); 
       File.Delete(args[0]); 
       File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Temp\\Myapp.exe", args[0], false); 

      } 
      catch (Exception e) 
      { 
       Console.Write(e.ToString() + ""); 
       //return; 
      }    
      //Console.Write("Success"); 
      try 
      { 
       Process.Start(args[0]); 
      } 
      catch (Exception es) 
      { 
       Console.Write(es.ToString() + ""); 
       //return; 
      } 
      Console.ReadLine(); 
     } 
    } 

但replacer.exe無法刪除Myapp.exe的,並給予例外System.UnauthorizedAccessException的。這就是說,在刪除Myapp.exe時,replacer.exe無法訪問Myapp.exe指定的路徑。注意:我已經以管理員和普通用戶的身份運行UserAccount,Myapp.exe和replacer.exe。 我該如何解決它。請幫幫我。 在此先感謝。 。 。

+0

哪行引發異常? –

+0

File.Delete(Path) –

+0

args [0]內容沒有問題,Myapp.exe不是隻讀的。 –

回答

1

你真的檢查了args[0]的內容嗎?如果它沒有必要的權限,File.Delete不只是拋出UnauthorizedAccessException;如果路徑通向一個目錄或一個只讀文件,它也會被拋出。