2009-11-06 61 views
0

我們正在重寫我們的應用程序以使其符合Windows Vista/7。爲此,我需要刪除%PROGRAMFILES%下應用程序目錄中的所有以前的數據。這絕對不會在用戶模式下工作,也不會以管理員模式編程工作。我嘗試使用下面的代碼行:刪除Windows 7/Vista中程序文件下的文件/文件夾

File.Delete(filePath); 

有編寫代碼來刪除用戶和管理模式文件的方法嗎?展望未來,我們會將所有數據存儲在%ALLUSERSPROFILE%目錄下,但在此之前,我需要編寫遷移代碼來爲用戶處理此問題。

+2

處理遷移安裝更新(讓安裝程序執行工作)不是更好嗎? – 2009-11-06 15:46:53

+0

是的,最好這樣做,這是我想要做的。但是,這會對我們目前如何分發我們的應用程序造成嚴重的返工,並且超出了本項目的範圍。 – 2009-11-06 15:48:31

回答

1

不需要。您必須以管理員身份啓動應用程序才能獲得對%PROGRAMFILES%的寫入訪問權限。另外,如果UAC處於啓用狀態,即使以管理員身份運行,仍可能仍會提示您獲得繼續權限。

由於C-Pound Guru在您的問題的評論中說過,您的更新安裝程序(應該由管理員運行)也應該清理舊文件。

0
if(System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt")) 
    { 
     // Use a try block to catch IOExceptions, to 
     // handle the case of the file already being 
     // opened by another process. 
     try 
     { 
      System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt"); 
     } 
     catch (System.IO.IOException e) 
     { 
      Console.WriteLine(e.Message); 
      return; 
     }