如何编程屏蔽光驱?就象在控制面板/系统/属性里屏蔽一样?(20分)

  • 主题发起人 主题发起人 Caicheng
  • 开始时间 开始时间
C

Caicheng

Unregistered / Unconfirmed
GUEST, unregistred user!
如何编程屏蔽光驱?就象在控制面板/系统/属性里屏蔽一样?
 
声明:以下内容摘自某网站(非常不好意思,想不起是哪了)如原文作者见到此
文,敬请见谅

一、 手工在Windows 98中隐藏光驱。
  Windows 98提供了隐藏某个磁盘驱动器(包括软驱、硬盘、光驱)的功能,我
们只需手工对注册表数据库进行修改即可达到隐藏光驱的目的,当然也就同样达到
了禁用光驱的目的。为此,可采用如下步骤:
  1. 单击“开始”按钮,然后选择“运行”命令,打开“运行”对话框。
  2. 在“运行”对话框的“打开”栏中输入“REGEDIT”,然后单击“确定”按
钮,启动Windows 98的注册表编辑器。
  3. 在注册表编辑器左边依次双击HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies
/Explorer,展开Explorer分支。
  4. 右击注册表编辑器右边空白处,然后执行“新建”菜单中的“二进制值”命
令,在Explorer主键下新建一个名为“新值 #1”的二进制值。
  5. 右击该二进制值,然后执行快捷菜单中的“重命名”命令,将“新值 #1”
二进制值改名为“NoDrives”。 该值就是用于设置是否隐藏某个驱动器的,它由四
个二进制字节构成(缺省值为00 00 00 00),每个字节的每一位都分别对应一个磁
盘驱动器的盘符,当某位为1时,资源管理器及“我的电脑”中的相应驱动器图标即
会隐藏起来。具体来说,“NoDrives”的第一个字节代表从A到H的八个盘(其中01
为A、02为B、04为C、08为D、10为E、20为F、40为G、80为H),第二个字节代表I
到P;第三个字节代表Q到X;第四个字节代表Y和Z。
  6. 双击NoDrives,系统弹出“编辑二进制值”对话框。
  7. 根据自己光驱盘符的实际情况对“NoDrives”的值进行修改,若光驱盘符为
D则应修改为08000000;若光驱盘符为E则应修改为10000000;若光驱盘符为F则应
修改为20000000……(将“NoDrives”改为FF FF FF FF则可隐藏所有驱动器)。
  8. 单击“确定”按钮,关闭“编辑二进制值”对话框。
  9. 执行注册表编辑器“注册表”菜单的“退出”命令,关闭注册表编辑器。
  10. 重新启动Windows 98。
  这样,光驱的图标就会从Windows 98的图形界面中消失,我们无论是从资源管
理器、我的电脑及打开文件、保存文件对话框中,还是在其他外挂文件管理器(如
Windows Command等)中都无法发现这些隐藏了的光驱的踪迹,从而达到了禁止他
人使用光驱的目的。
 
procedure ShieldCDs;
function IsCDROM(DriveChar: Char): Boolean;
begin
Result := GetDriveType(PChar(DriveChar + ':/')) = DRIVE_CDROM;
end;
const
_PATH = '/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer';
var
I, T: Integer;
Buffer, Mask: DWORD;
R: TRegistry;
begin
Mask := 0;
for I := 0 to 25 do
if IsCDROM(Char(I + Ord('A'))) then Mask := Mask + 1 shl I;
R := TRegistry.Create;
R.Rootkey := HKEY_CURRENT_USER;
R.CreateKey(_PATH);
R.OpenKey(_PATH, False);
if R.ReadBinaryData('NoDrives', Buffer, SizeOf(Buffer)) = 0 then Buffer := 0;
Buffer := Buffer and not Mask or Mask
// 为了不破坏对其它驱动器的设置。
R.WriteBinaryData('NoDrives', Buffer, SizeOf(Buffer));
R.Free;
end;
 
我的意思不是这样,我是想用一个程序比如一个 button,按一下,光驱被Disable,
再按一下,光驱被Enable.
在控制面板/系统/里面,光驱设备属性里就有这样一个button,我想知道
如何在我的程序中实现这样一个button
 
我用的系统是PWin98,控制面板/系统/光驱属性页中没有找到这样的button。
请描述一下。
 
对不起,我写错了。
应该是在硬盘控制器栏中,secondary IDE controller
它有个‘在此配置文件中禁用’选项,
点选以后,CDROM会被禁用,
然后这里会出现一个设备状态栏,里面便有一个 ‘启用设备’
的按纽
 
Croco的程序不错呀,你把它放到button1click中去不就行了?
 
跟踪到的操作如下:
1、注册表:
HKEY_LOCAL_MACHINE/Config/0001/Enum/MF/CHILD0001/PCI&VEN_8086&DEV_...
CSConfigFlags: 00 00 00 00 -> 01 00 00 00
2、广播消息:
WM_DEVICECHANGE
但编程实现上述操作,并不能达到效果,还有什么操作,还需请教高手。
 
我的目标是实现不重起机,动态锁定光驱,
就像"金山超级保镖",但我只要锁光驱.
可是很长时间了,还没有实现,请各位大侠帮忙.
 
可以即时控制DISK?真好!我也想知道!如果有哪位大虾知道,也请给我发一份!谢谢!
gcqmail@sohu.com
 
我还不知道 disable 是什么意思?
是不管作什么都没反应吗?
 
附加功能 将问题提前
 
Caicheng: 如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
大家来讨论啊, 我很想知道
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部