⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 自己编写的简单禁用usb端口的程序。 演示程序登录密码99366
💻 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 + -