GARANTIR DESCONTO

Fórum Bloquear estacao... #203238

28/12/2003

0

Olá!
Gostaria de saber como faço para bloquear a estação de trabalho! Para efetura LogOff é o seguinte:

ExitWindowsEx( EWX_LOGOFF, 0 ); // efetua logoff

Eu estou precisando de bloquear a estação!
Se alguem souber, valeu!


Marcelo

Marcelo

Responder

Posts

29/12/2003

Nigro

Você pode utilizar sockets, Coloque um executável na estação com clientsocket e um serversocket no servidor, defina a rede com ip fixo você pode começar com o code insight assim:
Servidor:
SeverSocket.Socket[0].SendText(´Teste...´);

Estação:
Edit1Text := ClientSocket.Socket.ReciveText;


Responder

Gostei + 0

29/12/2003

Marconi

Uma das maneiras é voce reconhecer o nome do computador que está se logando no seu programa e não deixa-lo entrar

Aí vai a função que retorna o nome do mesmo.

function CompName : String;
{Requer a unit Registry declarada na clausula Uses da Unit}
var
Registro : TRegistry;
begin
Registro := TRegistry.Create;
Registro.RootKey := HKEY_LOCAL_MACHINE;
if Registro.OpenKey(´System\CurrentControlSet\Control\ComputerName\ComputerName´, false) then
begin
result := Registro.ReadString(´ComputerName´);
end;
Registro.Free;
end;

Mas como o intruso pode mudar o nome do computador, verifique o número de série da HD do drive ´C:´ com a função abaixo.

Function SerialNum(FDrive:String) :String;
Var Serial:DWord;
DirLen,Flags: DWord;
DLabel : Array[0..11] of Char;
begin
Try
GetVolumeInformation(PChar(FDrive+´:\´),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
Except Result :=´´;
end;
end;

Ainda pode verificar o IP da estação que está querendo entrar no seu programa com a função abaixo.

function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := ´Winsock is not responding.´´;
Exit;
end;
IPaddr := ´´;
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^[i])) + ´.´);
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
else begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:=´WSANotInitialised´;
WSAENETDOWN :WSAErr:=´WSAENetDown´;
WSAEINPROGRESS :WSAErr:=´WSAEInProgress´;
end;
end;
Dispose(HName);
WSACleanup;
end;

É bom ter um LogFile de todos que entram no seu programa registrando dia, hora, Nome da Máquina, Número de Série do HD, IP, Nome do Usuário, etc. Atraves deste LogFile fica fácil identificar.

Espero ter ajudado

Marconi


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar