USB Sürücüleri Aktif/Deaktif Etmek(XP)

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

USB Sürücüleri Aktif/Deaktif Etmek(XP)

Mesaj gönderen G.Arkas »

Merhaba arkadaşlar.
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;
Bu kod bloğunda ise varsayılan değerin 4 olduğunu görüyoruz yani deaktif konumda.

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;
Kullanımı ise çok basittir.Kayıt defterini kullandığımız için öncelikle uses kısmına Registry unit ini ekliyoruz.
Daha sonra isteğe göre button veya radiobutton onclick event lerine

Kod: Tümünü seç

USB_ACTIVE;
USB_DEACTIVE;
olarak kullanımını gerçekleştiriyoruz.İstersek bunu sorgu gibi tasarlayıp bir timer kullanarak

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;
olarak kullanabilir anlık olarak durumu sorgulayabilirz.

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
Ve client te bunu yorumlayıp size cevabı gönderdi.

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;
Daha sonra tekrar server a geçip yollanan cevabı ekrana getirelim.

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;
Not: Vistada çalışmaz
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Ş
En son G.Arkas tarafından 26 Ağu 2009 01:53 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Resim
tugsat
Üye
Mesajlar: 132
Kayıt: 04 May 2009 09:30

Re: USB Sürücüleri Aktif/Deaktif Etmek(XP)

Mesaj gönderen tugsat »

Güzel makale teşekkürler.. :wink:
Cevapla