如何控制光驱(90分)

  • 主题发起人 主题发起人 3DDELPHI
  • 开始时间 开始时间
3

3DDELPHI

Unregistered / Unconfirmed
GUEST, unregistred user!
用DELPHI5如何禁止光驱的使用?多谢!!!
 
屏蔽光驱 :

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;
 
在98,Nt,2000下都适用嘛?
 
这是禁止驱动器吧
 
Only Hide the CDRom drive in the explorer!
 
WIN98,NT下均适用。

var s:string;
h=CreateFile("////.//E:",GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
if(h==INVALID_HANDLE_VALUE) then RaiseLastWin32Error();
DWORD n;
PREVENT_MEDIA_REMOVAL s={true};
if(!DeviceIoControl(h,IOCTL_STORAGE_MEDIA_REMOVAL,&s,sizeof s,NULL,0,&n,NULL))
then RaiseLastWin32Error();
CloseHandle(h);
 
多人接受答案了。
 
后退
顶部