U盘监控者

本文介绍了一个简单的程序,用于监控计算机中所有驱动器的状态变化,包括插入和移除U盘等设备,并介绍了如何通过重载WndProc方法实现这些功能。此外,程序还包括自动删除autorun.inf文件的功能以防止自动运行病毒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        这个程序可以监控所以驱动器的变化。比如说,插入一个U盘,程序会作出一些相应的响应。拔下的时候也一样。         程序的思路相当简单,原理也相当简单。是通过系统消息来判断驱动器的变化。需要重载 void WndProc(ref Message m)。       
        protected override void WndProc(ref Message m)
        {
            string Volumes = string.Empty;
            char[] Vs;
            switch((int)m.WParam)
            {
                case 0x8000:
                    Vs = GetVolumes(m.LParam);
                    foreach(char i in Vs)
                        Volumes += i;
                    AddMsg(Volumes, "New");
                    Clear(Vs);
                    break;
                case 0x8001:
                case 0x8002:
                case 0x8003:
                case 0x8004:
                    Vs = GetVolumes(m.LParam);
                    foreach(char i in Vs)
                        Volumes += i;
                    AddMsg(Volumes, "Gone");
                    break;
            }
            base.WndProc(ref m);
        }
         其中消息 0x8000是插入一个驱动器的消息, 0x8001: 0x8002: 0x8003: 0x8004:是一个驱动器被拔出或者出现其它的故障导致驱动器意外被卸下的消息。然后要用到 DEV_BROADCAST_VOLUME   结构体。
        [StructLayout(LayoutKind.Sequential)]
        struct DEV_BROADCAST_VOLUME
        {
            public UInt32 dbcv_size;
            public UInt32 dbcv_devicetype;
            public UInt32 dbcv_reserved;
            public UInt32 dbcv_unitmask;
            public UInt32 dbcv_flags;
        }
        具体的参数含义参见MSDN http://msdn.microsoft.com/en-us/library/aa363249(VS.85).aspx。         这个程序最后还加入了自动删除autorun.inf的功能,这样也防止了自动运行的病毒。         完整解决方案请点击 这里, 这里下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值