edit_note帖子
1,551
stars积分
20,071
event加入
2011-05-19
怀旧国机
屏蔽掉恶意网址的代码【电脑 reg代码】
schedule发表于 2013-01-09 00:44:00
visibility查看 76
chat_bubble回复 1
#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 删除吗?‘,[pszSrcFile]);
FO_MOVE: sOp:=format(‘你确定
要将 %s 转移到 %s 吗?‘,
[pszSrcFile,pszDestFile]);
FO_RENAME: sOp:=format(‘你确
定要将 %s 重命名为 %s 吗?‘,
[pszSrcFile,pszDestFile]);
else
sOp:=format(‘无法识别的操作代码
%d‘,[wFlags]);
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
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 删除吗?‘,[pszSrcFile]);
FO_MOVE: sOp:=format(‘你确定
要将 %s 转移到 %s 吗?‘,
[pszSrcFile,pszDestFile]);
FO_RENAME: sOp:=format(‘你确
定要将 %s 重命名为 %s 吗?‘,
[pszSrcFile,pszDestFile]);
else
sOp:=format(‘无法识别的操作代码
%d‘,[wFlags]);
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
全部回复 (1)
2013-01-09 01:05:00
沙发
!!!
登录 后才能回复
flag举报帖子