自从Windows 2000采用了动态缓存目录的保护措施以来,通常用原来的方法在删除系统自带游戏几秒后,游戏又可以使用了。本文介绍了在Visual Studio 2005环境下进行C#编程,来实现显示DllCache目录下的文件,并删除Windows 2000 pro系统自带的四个游戏。
一、界面设计
新建Windows应用程序,在出现的form中添加TreeView、ListView和Button控件各一个,调整到适当的大小,改变button1的text为“删除系统自带程序”,将listview1的view项设置为detail,其余不变。添加三个imagelist控件,分别改名为TreeImageList、TreeViewImageList和ListViewImageList,用于存放引用自系统shell32.dll中的图标。
二、显示DllCache目录及其下面的文件
1.添加使用命名空间和文件结构信息
- using System.IO;
- using System.Runtime.InteropServices;
- using System.Reflection;
2.添加文件结构信息,调用Windows API中的提取图标函数和获取系统路径函数,并构造自定义的提取图标函数。
- [StructLayout(LayoutKind.Sequential)] 0
- public struct SHFILEINFO
- { public IntPtr hIcon;
- public int iIcon;
- public uint dwAttributes;
- public char szDisplayName;
- public char szTypeName; }
- private System.Windows.Forms.ImageList TreeImageList;
-
- [DllImport("Shell32.dll")]
- public static extern int ExtractIcon(IntPtr h, string strx, int ii);
-
- [DllImport("Kernel32.dll" ,CharSet = CharSet.Auto)]
- public static extern Int32 GetSystemDirectory(StringBuilder WinDir, Int32 usize);
-
- protected virtual Icon myExtractIcon(string FileName, int iIndex)
- { try
- { IntPtr hIcon = (IntPtr) ExtractIcon(this.Handle, FileName, iIndex);
- if (!hIcon.Equals(null))
- { Icon icon = Icon.FromHandle(hIcon);
- return icon; }
- }
- catch (Exception ex)
- { MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); }
- return null;
- }
3.在Form构造函数中添加获取图标信息,图标取自shell32.dll。
- Icon ic0 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 15);
- TreeImageList.Images.Add(ic0);
- Icon ic1 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 5);
- TreeImageList.Images.Add(ic1);
- Icon ic2 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 7);
- TreeImageList.Images.Add(ic2);
- Icon ic3 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 11);
- TreeImageList.Images.Add(ic3);
- Icon ic4 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 3);
- TreeImageList.Images.Add(ic4);
- Icon ic5 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 4);
- TreeImageList.Images.Add(ic5);
- Icon ic6 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 101);
- TreeImageList.Images.Add(ic6);
- Icon ic7 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 51);
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】
打赏
扫码打赏,您说多少就多少