程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#編程刪除系統自帶游戲(2)

C#編程刪除系統自帶游戲(2)

編輯:關於C語言

三、刪除系統自帶的四個游戲程序

(1)自定義函數,用於刪除Windows2000的四個系統自帶游戲

  1. private void DelSystemFourGames()   
  2. { string str="";   
  3. StringBuilder buff1 = new StringBuilder(nChars);   
  4. StringBuilder buff2 = new StringBuilder(nChars);   
  5. GetSystemDirectory(Buff, nChars);   
  6. Buff.Append("\\");   
  7. GetSystemDirectory(buff1, nChars);   
  8. buff1.Append("\\");   
  9. buff2=buff1;   
  10. str="sol.exe"; 
  11. if(File_in_Directory(str, buff1.ToString()))   
  12. { Buff.Append("sol.exe");//紙牌   
  13. buff2.Append("DllCache\\");   
  14. buff2.Append("sol.exe");   
  15. //執行刪除文件,刪除後的文件不出現在回收站中   
  16. File.Delete(Buff.ToString());   
  17. File.Delete(buff2.ToString());  
  18. Buff.Remove(Buff.Length - 7, 7);   
  19. //還原Buff的字符為system32\目錄下,7是“sol.exe”的長度   
  20. buff2.Remove(buff2.Length - 7, 7);//類上,還原為dllcache\目錄下   
  21. }   
  22. …… 
  23. //省略了刪除“空當接龍”和“掃雷”兩個游戲的程序段因其內容同上,只不過改str = "freecell.exe"   
  24. //和str = "winmine.exe",以及Buff.Remove中的數字長度與相應的文件名長度一致。   
  25. // 刪除Windows XP中的蜘蛛“spider.exe”與上類同   
  26. GetSystemDirectory(Buff, nChars);   
  27. GetSystemDirectory(buff2, nChars);  
  28. buff2.Append("\\");   
  29. Buff.Remove(3, Buff.Length - 3); //反回到“盤符:\”狀態   
  30. Buff.Append("Program Files\\Windows NT\\Pinball");//桌上彈球   
  31. str = "pinball.exe";   
  32. if (File_in_Directory(str, Buff.ToString()))   
  33. { DeleteDir(Buff.ToString());//刪除目錄   
  34. buff2.Append("DllCache\\");   
  35. buff2.Append("pinball.exe");  
  36. File.Delete(buff2.ToString()); 
  37. }   
  38. }    

(2)在button1_OnClick中調用自定義刪除函數

  1. DelSystemFourGames(); 

四、兩個自定義函數

1.判斷文件是否在指定的文件夾中

  1. private bool File_in_Directory(string str1, string str2)   
  2. {   
  3. DirectoryInfo curDir = new DirectoryInfo(str2);//創建目錄對象。   
  4. FileInfo[] dirFiles;   
  5. try  
  6. { dirFiles = curDir.GetFiles(); }   
  7. catch  
  8. { return false; }   
  9. foreach (FileInfo fileInfo in dirFiles)   
  10. { if (fileInfo.Name == str1) return true; }   
  11. return false;   
  12. }    

2.刪除目錄及目錄下所有文件與子目錄

  1. public static void DeleteDir(string Path)   
  2. { try  
  3. { // 檢查路徑名是否以分割字符結束,如果不是則添加”\”分隔符   
  4. if (Path[Path.Length - 1] != Path.DirectorySeparatorChar)   
  5. Path += Path.DirectorySeparatorChar;   
  6. string[] fileList = Directory.GetFileSystemEntrIEs(Path);   
  7. // 遍歷所有的文件和目錄   
  8. foreach (string file in fileList)   
  9. {   
  10. // 先將文件當作目錄處理如果存在這個目錄就遞歸Delete該目錄下面的文件   
  11. if (Directory.Exists(file))   
  12. {   
  13. DeleteDir(Path + Path.GetFileName(file));   
  14. }   
  15. else // 否則直接Delete文件   
  16. { //改變文件的只讀屬性   
  17. FileInfo fi = new FileInfo(file);   
  18. if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)   
  19. fi.Attributes = FileAttributes.Normal;   
  20. File.Delete(Path + Path.GetFileName(file)); //刪除文件   
  21. }   
  22. }   
  23. System.IO.Directory.Delete(Path, true); //刪除文件夾   
  24. }   
  25. catch (Exception e)   
  26. { MessageBox.Show(e.ToString()); }   
  27. }  

附言:本文程序采用的是Visual Studio 2005 C#編寫,所述代碼均已在Windows 2000 pro/server中運行通過。

本文通過C#編程實現了刪除Windows 2000系統自帶游戲這個目標,並將微軟為考慮自身安全的dllcache目錄及其中的文件顯示出來,希望能夠對要了解這方面的相關人員有所幫助。

【編輯推薦】

  1. 教你寫不可思議的C#代碼
  2. C#調試從入門到精通
  3. 詳解C#中如何訪問私有成員
  4. 編程必讀 15個編程好習慣
  5. 程序員編程須知的七大攻略
【責任編輯:鄭添龍 TEL:(010)68476606】
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved