♂我是上帝♂ 发表于 2014-6-19 10:56:21

要想实现U盘里自启动以及控制U盘的访问权 需要哪些方面的知识?

如题:要想实现U盘里自启动以及控制U盘的访问权需要哪些方面的知识?想让一个程序在插入U盘后即运行,不管是否自动播放,并且可以控制U盘是否被访问,以及格式化。
如有大神,请不吝赐教。

向往青莲 发表于 2014-6-19 10:56:22

♂我是上帝♂ 发表于 2014-6-20 10:47 static/image/common/back.gif
没有啦,我就想回复谢谢。结果出来这个,我就直接粘贴,凑字数

那选我为最佳答案呗。。亲。。。╭(╯3╰)╮

小甲鱼 发表于 2014-6-19 17:36:03

可以通过量产解决访问权限的问题,例如禁止写入权限,跟光盘一样的只读权限。

♂我是上帝♂ 发表于 2014-6-19 21:09:46

小甲鱼 发表于 2014-6-19 17:36 static/image/common/back.gif
可以通过量产解决访问权限的问题,例如禁止写入权限,跟光盘一样的只读权限。

谢谢小甲鱼。不过这样会不会 U盘没法像正常U盘一样存储和读写文件。我只是想让U盘在验证密码前无法打开和格式化U盘。

小甲鱼 发表于 2014-6-19 21:24:50

♂我是上帝♂ 发表于 2014-6-19 21:09 static/image/common/back.gif
谢谢小甲鱼。不过这样会不会 U盘没法像正常U盘一样存储和读写文件。我只是想让U盘在验证密码前无法打开和 ...

如果你希望写一个安全软件,将数据存放在U盘的安全软件中,需要验证才能对该安全软件内的东西进行操作,这是可以办到的。但无法阻止从我的电脑右键“格式化U盘”。

♂我是上帝♂ 发表于 2014-6-19 21:35:49

本帖最后由 ♂我是上帝♂ 于 2014-6-19 21:40 编辑

http://www.demohour.com/projects/320198如果在U盘量产时就把软件写入呢?我看到网上有一个软件安装后,即使重装系统也没用。,我是只菜鸟,上面的不知道说得对不对?只是想实现自己的想法.谢谢小甲鱼。

向往青莲 发表于 2014-6-20 09:21:56

ring3下实现。。。。。检测U盘插入的函数

      ///// 检测U盘插入c#代码
      ///// </summary>

      //public const int WM_DEVICECHANGE = 0x219;
      //public const int DBT_DEVICEARRIVAL = 0x8000;
      //public const int DBT_CONFIGCHANGECANCELED = 0x0019;
      //public const int DBT_CONFIGCHANGED = 0x0018;
      //public const int DBT_CUSTOMEVENT = 0x8006;
      //public const int DBT_DEVICEQUERYREMOVE = 0x8001;
      //public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;
      //public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
      //public const int DBT_DEVICEREMOVEPENDING = 0x8003;
      //public const int DBT_DEVICETYPESPECIFIC = 0x8005;
      //public const int DBT_DEVNODES_CHANGED = 0x0007;
      //public const int DBT_QUERYCHANGECONFIG = 0x0017;
      //public const int DBT_USERDEFINED = 0xFFFF;

      //protected override void WndProc(ref Message m)
      //{
      //    try
      //    {
      //      if (m.Msg == WM_DEVICECHANGE)
      //      {
      //            switch (m.WParam.ToInt32())
      //            {
      //                case WM_DEVICECHANGE:
      //                  break;
      //                case DBT_DEVICEARRIVAL://U盘插入
      //                  DriveInfo[] s = DriveInfo.GetDrives();
      //                  foreach (DriveInfo drive in s)
      //                  {
      //                        if (drive.DriveType == DriveType.Removable)
      //                        {
      //                            Upath = drive.Name.ToString();
      //                            string folderpath = Upath + @"\taxbase";
      //                            if (!Directory.Exists(folderpath))
      //                            {
      //                              Directory.CreateDirectory(folderpath);
      //                            }
      //                            string path = Upath + @"\taxbase\" + LoginUserInfo.LoginUser.Com_code + @".db";
      //                            if (File.Exists(path))
      //                            {
      //                              MessageBox.Show("检测到U盘插入,可以更新数据!");
      //                            }
      //                            break;
      //                        }
      //                  }
      //                  break;
      //                case DBT_CONFIGCHANGECANCELED:
      //                  break;
      //                case DBT_CONFIGCHANGED:
      //                  break;
      //                case DBT_CUSTOMEVENT:
      //                  break;
      //                case DBT_DEVICEQUERYREMOVE:
      //                  break;
      //                case DBT_DEVICEQUERYREMOVEFAILED:
      //                  break;
      //                case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
      //                  break;
      //                case DBT_DEVICEREMOVEPENDING:
      //                  break;
      //                case DBT_DEVICETYPESPECIFIC:
      //                  break;
      //                case DBT_DEVNODES_CHANGED:
      //                  break;
      //                case DBT_QUERYCHANGECONFIG:
      //                  break;
      //                case DBT_USERDEFINED:
      //                  break;
      //                default:
      //                  break;
      //            }
      //      }
      //    }
      //    catch (Exception ex)
      //    {
      //      MessageBox.Show(ex.Message);
      //    }
      //    base.WndProc(ref m);
      //}


至于访问控制,。。。。可以用HOOK API 实现。。。HOOK CreateFile试试。。

♂我是上帝♂ 发表于 2014-6-20 09:36:34

向往青莲 发表于 2014-6-20 09:21 static/image/common/back.gif
ring3下实现。。。。。检测U盘插入的函数

      ///// 检测U盘插入c#代码


谢谢(这年头,干啥都不容易。灌水也要专业点哈~ 论坛和谐学习环境,需要你我一起来维护^_^

向往青莲 发表于 2014-6-20 09:37:53

♂我是上帝♂ 发表于 2014-6-20 09:36 static/image/common/back.gif
谢谢(这年头,干啥都不容易。灌水也要专业点哈~ 论坛和谐学习环境,需要你我一起来维护^_^


我。。。我这算灌水么?。。。
{:7_154:}

♂我是上帝♂ 发表于 2014-6-20 10:47:31

向往青莲 发表于 2014-6-20 09:37 static/image/common/back.gif
我。。。我这算灌水么?。。。

没有啦,我就想回复谢谢。结果出来这个,我就直接粘贴,凑字数

小甲鱼 发表于 2014-6-20 16:05:51

向往青莲 发表于 2014-6-20 12:02 static/image/common/back.gif
那选我为最佳答案呗。。亲。。。╭(╯3╰)╮

{:5_106:}青莲真厉害~

向往青莲 发表于 2014-6-20 17:16:46

小甲鱼 发表于 2014-6-20 16:05 static/image/common/back.gif
青莲真厉害~

这个是百度查到的。。。
像这种,最好的办法是写一个文件过滤驱动(minifilter应该就能实现, 当然HOOK也可以,不过就怕不稳定,minifilter很稳定)。。。。。强大有效方便。。。
我怕楼主不懂,就没敢说。。。。。。囧。。。反正感觉ring0实现比ring3实现强多了。。。

鱼哥。。。我计算机入门都是看的你的教程入门的呢。。。。。。。。。。
C语言,C++,汇编,OD,win32汇编。。。。。。。。
{:7_148:}
页: [1]
查看完整版本: 要想实现U盘里自启动以及控制U盘的访问权 需要哪些方面的知识?