📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry, shellapi, math, ComCtrls, ExtCtrls;
type
TFormMain = class(TForm)
Buttonenable: TButton;
Buttonclose: TButton;
Button_Exit: TButton;
StatusBar1: TStatusBar;
Timer1: TTimer;
procedure ButtonenableClick(Sender: TObject);
procedure ButtoncloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button_ExitClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
procedure Showstatus(Sender:TObject);
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
procedure TFormMain.ButtonenableClick(Sender: TObject);
var
path: array[0..1023] of Char;
str:string;
parameters:string;
reg:tregistry;
begin
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('\SYSTEM\CurrentControlSet\Services\UsbStor',true);
reg.WriteInteger('Start',3);
reg.closekey;
reg.free;
str:='cacls';
ExpandEnvironmentStrings(PChar('%SystemRoot%'), path, 1024);
parameters:= trim(path) + '\Inf\Usbstor.pnf /e /g SYSTEM:F';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
parameters:= trim(path) + '\Inf\Usbstor.pnf /e /g Users:R';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
parameters:= trim(path) + '\Inf\Usbstor.inf /e /g SYSTEM:F';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
parameters:= trim(path) + '\Inf\Usbstor.inf /e /g Users:R';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
reg:=tregistry.create;
reg.rootkey:=HKEY_CURRENT_USER;
reg.openkey('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',true);
reg.DeleteValue('NoDrives');
reg.DeleteValue('NoViewOnDrive');
reg.closekey;
reg.Free;
Showstatus(self);
end;
procedure TFormMain.ButtoncloseClick(Sender: TObject);
var
path: array[0..1023] of Char;
str:string;
parameters:string;
reg:tregistry;
driverlist:DWORD;
k:Extended;
begin
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('\SYSTEM\CurrentControlSet\Services\UsbStor',true);
reg.WriteInteger('Start',4);
reg.closekey;
reg.free;
str:='cacls';
ExpandEnvironmentStrings(PChar('%SystemRoot%'), path, 1024);
parameters:= trim(path) + '\Inf\Usbstor.pnf /e /d SYSTEM';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
parameters:= trim(path) + '\Inf\Usbstor.pnf /e /d Users';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
parameters:= trim(path) + '\Inf\Usbstor.inf /e /d SYSTEM';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
parameters:= trim(path) + '\Inf\Usbstor.inf /e /d Users';
ShellExecute(Handle,'Open',pchar(str),pchar(parameters),nil,SW_HIDE);
//禁用未使用的驱动器号
k:=0;
DriverList := GetLogicalDrives;
if (DriverList <> 0) then
begin
k := power(2,26) - 1 - DriverList;
end
else
showmessage('获取驱动器失败');
reg:=tregistry.create;
reg.rootkey:=HKEY_CURRENT_USER;
reg.openkey('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',true);
reg.WriteInteger('NoDrives',round(k));
reg.WriteInteger('NoViewOnDrive',round(k));
reg.closekey;
reg.Free;
Showstatus(self);
end;
procedure TFormMain.FormCreate(Sender: TObject);
begin
self.Left:=(screen.Width-self.Width) div 2;
self.Top:=(screen.Height-self.Height) div 2 + 80;
SetWindowPos(Handle,Hwnd_Topmost,0,0,0,0,(SWP_NOMOVE Or SWP_NOSIZE)); //前端显示
end;
procedure TFormMain.Button_ExitClick(Sender: TObject);
begin
self.close;
end;
function ExpandEnvironment(const strValue: string): string;
var
chrResult: array[0..1023] of Char;
wrdReturn: DWORD;
begin
wrdReturn := ExpandEnvironmentStrings(PChar(strValue), chrResult, 1024);
if wrdReturn = 0 then
Result := strValue
else
begin
Result := Trim(chrResult);
end;
end;
procedure TFormMain.Showstatus(Sender:TObject);
var
reg:tregistry;
int1:integer;
begin
reg:=tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
reg.openkey('\SYSTEM\CurrentControlSet\Services\UsbStor',true);
int1:=reg.ReadInteger('Start');
reg.closekey;
reg.free;
if int1 = 3 then statusbar1.SimpleText:='当前状态 可用'
else
if int1 = 4 then statusbar1.SimpleText:='当前状态 不可用'
else
statusbar1.SimpleText:='当前状态 不明';
end;
procedure TFormMain.Timer1Timer(Sender: TObject);
begin
showstatus(self);
timer1.Enabled:=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -