Bu dökümanımda sizlere USB sürücüleri program içerisinde nasıl aktif/deaktif konuma alabileceğinizi açıklayacağım.
Aşağıda ki kod bloğu var olan veri tipi DWORD ve veri değeri 3 tür (Varsayılan/Aktif)
Kod: Tümünü seç
procedure USB_ACTIVE;
var
R:Tregistry;
s:string;
begin
r:=tregistry.Create;
r.RootKey:=HKEY_LOCAL_MACHINE;
S:='SYSTEM\CurrentControlSet\Services\USBSTOR';
r.OpenKey(s,false);
r.Writeinteger('Start',3);---------> varsayılan değer
r.CloseKey;
r.Free;
END;
Kod: Tümünü seç
Procedure USB_DEACTIVE;
var
R:Tregistry;
s:string;
begin
r:=tregistry.Create;
r.RootKey:=HKEY_LOCAL_MACHINE;
S:='SYSTEM\CurrentControlSet\Services\USBSTOR';
r.OpenKey(s,false);
r.Writeinteger('Start',4);
r.CloseKey;
r.Free;
END;
Daha sonra isteğe göre button veya radiobutton onclick event lerine
Kod: Tümünü seç
USB_ACTIVE;
USB_DEACTIVE;
Kod: Tümünü seç
procedure TForm1.Timer1Timer(Sender: TObject);
var
u:string;
r:Tregistry;
begin
r:=tregistry.Create;
r.RootKey:=HKEY_LOCAL_MACHINE;
u:='SYSTEM\CurrentControlSet\Services\USBSTOR';
r.OpenKey(u,false);
if r.ReadInteger('Start')=4 then
begin
r.CloseKey;
r.Free;
edit1.text:='Disable';
end
else
edit1.text:='Enable';
end;
Biraz daha değiştirirerek örneğin Ters bağlantı(Reverse Connection) kullandığımız bir projede bunu sorgulayalım;
Siz client e usb durumunu sorgulamak amacı ile komut gönderdiniz.
Kod: Tümünü seç
//button1.click;
serversocket1.socket.connections[listview1.itemindex].sendtext('usbstatus');//Bağlantıları listview nesnesinde sıraladığımızı varsayıyorum ve itemindex komutu ile sorgu yollamak istediğim bağlantıyı seçiyorum
Kod: Tümünü seç
//clientread
var
s:string;
begin
s:=socket.receivetext;
if copy(s,1,9)='usbstatus' then
begin
delete(s,1,9);
socket.sendtext('usb'+edit1.text);//yani editteki usb durumu
end;
end;
Kod: Tümünü seç
//onclientread
var
s:string;
begin
s:socket.receivetext;
if copy(s,1,3)='usb' then
begin
delete(s,1,3);
showmessage(s);
end;
end;
Sebep: UAC Yani kullanıcı onaylı giriş sistemi yüzünden registry e erişim hakkı sadece administrator oturumu açıldığında mümkündür.UAC ı disable konumuna alarak çalıştırabilirsiniz.
Hepinize iyi çalışmalar.Gürkan ARKAŞ