三、刪除系統自帶的四個游戲程序
(1)自定義函數,用於刪除Windows2000的四個系統自帶游戲
- private void DelSystemFourGames()
- { string str="";
- StringBuilder buff1 = new StringBuilder(nChars);
- StringBuilder buff2 = new StringBuilder(nChars);
- GetSystemDirectory(Buff, nChars);
- Buff.Append("\\");
- GetSystemDirectory(buff1, nChars);
- buff1.Append("\\");
- buff2=buff1;
- str="sol.exe";
- if(File_in_Directory(str, buff1.ToString()))
- { Buff.Append("sol.exe");//紙牌
- buff2.Append("DllCache\\");
- buff2.Append("sol.exe");
- //執行刪除文件,刪除後的文件不出現在回收站中
- File.Delete(Buff.ToString());
- File.Delete(buff2.ToString());
- Buff.Remove(Buff.Length - 7, 7);
- //還原Buff的字符為system32\目錄下,7是“sol.exe”的長度
- buff2.Remove(buff2.Length - 7, 7);//類上,還原為dllcache\目錄下
- }
- ……
- //省略了刪除“空當接龍”和“掃雷”兩個游戲的程序段因其內容同上,只不過改str = "freecell.exe"
- //和str = "winmine.exe",以及Buff.Remove中的數字長度與相應的文件名長度一致。
- // 刪除Windows XP中的蜘蛛“spider.exe”與上類同
- GetSystemDirectory(Buff, nChars);
- GetSystemDirectory(buff2, nChars);
- buff2.Append("\\");
- Buff.Remove(3, Buff.Length - 3); //反回到“盤符:\”狀態
- Buff.Append("Program Files\\Windows NT\\Pinball");//桌上彈球
- str = "pinball.exe";
- if (File_in_Directory(str, Buff.ToString()))
- { DeleteDir(Buff.ToString());//刪除目錄
- buff2.Append("DllCache\\");
- buff2.Append("pinball.exe");
- File.Delete(buff2.ToString());
- }
- }
(2)在button1_OnClick中調用自定義刪除函數
- DelSystemFourGames();
四、兩個自定義函數
1.判斷文件是否在指定的文件夾中
- private bool File_in_Directory(string str1, string str2)
- {
- DirectoryInfo curDir = new DirectoryInfo(str2);//創建目錄對象。
- FileInfo[] dirFiles;
- try
- { dirFiles = curDir.GetFiles(); }
- catch
- { return false; }
- foreach (FileInfo fileInfo in dirFiles)
- { if (fileInfo.Name == str1) return true; }
- return false;
- }
2.刪除目錄及目錄下所有文件與子目錄
- public static void DeleteDir(string Path)
- { try
- { // 檢查路徑名是否以分割字符結束,如果不是則添加”\”分隔符
- if (Path[Path.Length - 1] != Path.DirectorySeparatorChar)
- Path += Path.DirectorySeparatorChar;
- string[] fileList = Directory.GetFileSystemEntrIEs(Path);
- // 遍歷所有的文件和目錄
- foreach (string file in fileList)
- {
- // 先將文件當作目錄處理如果存在這個目錄就遞歸Delete該目錄下面的文件
- if (Directory.Exists(file))
- {
- DeleteDir(Path + Path.GetFileName(file));
- }
- else // 否則直接Delete文件
- { //改變文件的只讀屬性
- FileInfo fi = new FileInfo(file);
- if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
- fi.Attributes = FileAttributes.Normal;
- File.Delete(Path + Path.GetFileName(file)); //刪除文件
- }
- }
- System.IO.Directory.Delete(Path, true); //刪除文件夾
- }
- catch (Exception e)
- { MessageBox.Show(e.ToString()); }
- }
附言:本文程序采用的是Visual Studio 2005 C#編寫,所述代碼均已在Windows 2000 pro/server中運行通過。
本文通過C#編程實現了刪除Windows 2000系統自帶游戲這個目標,並將微軟為考慮自身安全的dllcache目錄及其中的文件顯示出來,希望能夠對要了解這方面的相關人員有所幫助。
【編輯推薦】