2026年10月31日 · 今日 0 帖 · 会员 6.1万 · 主题 17.4万
登录 · 注册 · 游客,欢迎随便逛逛
返回版块
1000
Lv9有为九子能等级图标
勋章勋章勋章勋章勋章
帖子
9.3万
回复
2,089
积分
60.3万
注册
2006-12-06
[怀旧国机]

屏蔽掉恶意网址的代码【电脑 reg代码】

[复制链接]
查看 76 回复 1
楼主 发表于 | 只看该作者

library CopyHook;

uses

ComServ,

CopyMain in ‘CopyMain.pas‘;

exports

DllGetClassObject,

DllCanUnloadNow,

DllRegisterServer,

DllUnregisterServer;

{$$$$R *.TLB}

{$$$$R *.RES}

begin

end.

CopyMain.pas

unit CopyMain;

interface

uses Windows, ComObj, ShlObj;

type

TCopyHook = class(TComObject,

ICopyHook)

protected

function CopyCallback(Wnd:

HWND; wFunc, wFlags: UINT;

pszSrcFile: PAnsiChar;

dwSrcAttribs: DWORD;

pszDestFile: PAnsiChar;

dwDestAttribs: DWORD): UINT;

stdcall;

end;

TCopyHookFactory = class

(TComObjectFactory)

protected

function GetProgID: string;

override;

procedure

ApproveShellExtension(Register:

Boolean; const ClsID: string);

virtual;

public

procedure *Registry(Register:

Boolean); override;

end;

implementation

uses ComServ, SysUtils, Registry;

{ TCopyHook }

//file://当Windows外壳程序执行文

件夹或者打印机端口操作时,

CopyCallBack

//file://方法就会被调用。

function

TCopyHook.CopyCallback(Wnd:

HWND; wFunc, wFlags: UINT;

pszSrcFile: PAnsiChar;

dwSrcAttribs: DWORD;

pszDestFile: PAnsiChar;

dwDestAttribs: DWORD): UINT;

const

FO_COPY = 2;

FO_* = 3;

FO_MOVE = 1;

FO_RENAME = 4;

var

sOp:string;

begin

Case wFunc of

FO_COPY: sOp:=format(‘你确定要

将 %s 拷贝到 %s 吗?‘,

[pszSrcFile,pszDestFile]);

FO_*: sOp:=format(‘你确定要将

%s 删除吗?‘,);

FO_MOVE: sOp:=format(‘你确定

要将 %s 转移到 %s 吗?‘,

[pszSrcFile,pszDestFile]);

FO_RENAME: sOp:=format(‘你确

定要将 %s 重命名为 %s 吗?‘,

[pszSrcFile,pszDestFile]);

else

sOp:=format(‘无法识别的操作代码

%d‘,);

end;

// 提示,让用户决定是否执行操作

Result := MessageBox(Wnd,

PChar(sOp),

‘文件挂钩演示‘,

MB_YESNOCANCEL);

end;

{ TCopyHookFactory }

function

TCopyHookFactory.GetProgID:

string;

begin

Result := ‘‘;

end;

procedure

TCopyHookFactory.*Registry

(Register: Boolean);

var

ClsID: string;

begin

ClsID := GUIDToString(ClassID);

inherited *Registry(Register);

ApproveShellExtension(Register,

ClsID);

if Register then

// file://将clsid 加入到注册表的

CopyHookHandlers中

*RegKey(‘directory\shellex

\CopyHookHandlers\‘ +

ClassName, ‘‘,

ClsID)

else

*RegKey(‘directory\shellex

\CopyHookHandlers\‘ +

ClassName);

end;

procedure TCopyHookFactory.

ApproveShellExtension(Register:

Boolean;

const ClsID: string);

const

SApproveKey = ‘SOFTWARE

\Microsoft\Windows

\CurrentVersion\Shell Extensions

\Approved‘;

begin

with TRegistry.* do

try

RootKey :=

HKEY_LOCAL_MACHINE;

if not OpenKey(SApproveKey,

True) then Exit;

if Register then WriteString

(ClsID, Description)

else *Value(ClsID);

finally

Free;

end;

end;

const

CLSID_CopyHook: TGUID =

‘{66CD5F60-A044-11D0-

A9BF-00A024E3867F}‘;

LIBID_CopyHook: TGUID =

‘{D2F531A0-0861-11D2-

AE5C-74640BC10000}‘;

initialization

TCopyHookFactory.*

(ComServer, TCopyHook,

CLSID_CopyHook,

‘CR_CopyHook‘, ‘文件操作挂钩演

示‘,ciMultiInstance,

tmApartment);end.@echo off

@setlocal

ENABLEDELAYEDEXPANSION

title 可屏蔽网址的批处理。

:begin

mode con cols=50 lines=56

echo

******************************

*******************

echo *****************选择如下

操作********************

echo.

echo.

echo ***************1.添加要屏

蔽的网址****************

echo ***************2.删除已屏

蔽的网址****************

echo ***************3.查找已屏

蔽的网址****************

echo ***************4.退出

****************************

echo.

copy %systemdrive%\WINDOWS

\system32\drivers\etc\hosts

%systemdrive%\WINDOWS

\system32\drivers\etc

\hosts.txt>nul

:chose

set /p enter=请你输入你的选择:

echo.

if /i “%enter%”==“1” goto add

if /i “%enter%”==“2” goto del

if /i “%enter%”==“3” goto check

if /i “%enter%”==“4” goto end

:add

set /p input=输入要添加的网址:

if /i “%input%”==“n” goto chose

echo 127.0.0.1 %input

%》%systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt

echo 成功添加屏蔽网址%input%

echo 请准确的输入或者按n跳到

chose!

copy %systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt

%systemdrive%\WINDOWS

\system32\drivers\etc\hosts>nul

pause

cls

goto begin

:del

echo ~_~你选择了删除操作切记务

必最好输入完整的网址~_~

set /p del=输入要删除的网址:

if /i “%del%”==“n” goto chose

@for /f “tokens=*delims=” %%i in (‘findstr /i /v /

c:%del% %systemdrive%

\WINDOWS\system32\drivers\etc

\hosts.txt’) do (

set var=%%i

echo !var!》b.txt

)

copy b.txt %systemdrive%

\WINDOWS\system32\drivers\etc

\hosts.txt>nul

del b.txt

echo 操作完成

echo 请准确的输入或者按n跳到

chose!

copy %systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt

%systemdrive%\WINDOWS

\system32\drivers\etc\hosts>nul

pause

cls

goto begin

:check

for /f “tokens=2 delims= ” %%i in

(‘findstr /i /c:“www”

%systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt’)

do (set var=%%i

echo !var!

)

for /f “tokens=2 delims= ” %%i in

(‘findstr /i /c:“bbs”

%systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt’)

do (set var=%%i

echo !var!

)

copy %systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt

%systemdrive%\WINDOWS

\system32\drivers\etc\hosts>nul

pause

goto begin

:end

copy %systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt

%systemdrive%\WINDOWS

\system32\drivers\etc\hosts>nul

del %systemdrive%\WINDOWS

\system32\drivers\etc\hosts.txt

exit

登录回复
48681
Lv5甘首五朝臣等级图标等级图标等级图标等级图标等级图标
帖子
32
回复
1,278
积分
3.5万
注册
2011-06-05
1 楼

!!!

登录后可以回复这个帖子。旧账号可使用原密码登录。

登录 注册新号
← 返回版块