Форум: "Сети";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизУдаленный коннект к компу Найти похожие ветки
← →
Andersen (2003-12-02 14:05) [0]Как удаленно(программно) залогиниться на комп?
← →
Polevi (2003-12-02 16:07) [1]комп очевидно билла гейтса ?
← →
OlegV (2003-12-02 16:07) [2]А точнее ?
← →
Andersen (2003-12-02 16:13) [3]Ну вот есть комп в локалке, зарегистрирован в домене DOMAIN. И есть я - админ этого домена и хочу с компа COMP1 программно войти на комп COMP2, у которого висит окно "нажмите CTRL+ALT+DEL для входа". Это реально или я говорю какую-нить фигню?
← →
Polevi (2003-12-02 16:15) [4]что значит "войти"
← →
OlegV (2003-12-02 16:30) [5]
function LogOn(ToDir: String): Boolean;
var
Line, Serv: String;
Logged: Boolean;
C: Cardinal;
SI: TStartupInfo;
PI: TProcessInformation;
WasOK: Boolean;
Buffer: array[0..MAX_PATH] of Char;
Len: Integer;
WorkDir: String;
ExitCode: Cardinal;
begin
ToDir:=ToDir+#0;
Result := True;
if Copy (ToDir, 1, 2) = "\\" then begin
Result := False;
Serv := Copy (ToDir, 1, PosCnt(PChar(ToDir), "\", 3)-1);
Line := "net use "+Serv+" password /USER:administrator"+#0;
try
with SI do
begin
FillChar(SI, SizeOf(SI), 0);
cb := SizeOf(SI);
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow := SW_HIDE;
end;
Len := GetSystemDirectory (Buffer, MAX_PATH);
Buffer[Len] := #0;
WorkDir := StrPas(Buffer);
WasOK := CreateProcess(nil, PChar(Line), nil, nil, True, 0, nil, PChar(WorkDir), SI, PI);
if not WasOK then
raise Exception.Create("Could not execute command line!")
else
try
WaitForSingleObject(PI.hProcess, INFINITE);
GetExitCodeProcess (PI.hProcess, ExitCode);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end;
finally
result:= ExitCode = 0;
end;
end;
end;
function LogOff(ToDir: String): Boolean;
var
Line, Serv: String;
Logged: Boolean;
C: Cardinal;
begin
ToDir:=ToDir+#0;
Logged := False;
if Copy (ToDir, 1, 2) = "\\" then begin
Serv := Copy (ToDir, 1, PosCnt(PChar(ToDir), "\", 3)-1);
Line := "net use "+Serv+" /DELETE"+#0;
C := WinExec (PChar(Line), SW_HIDE);
Logged := (C <> ERROR_BAD_FORMAT) or (C <> ERROR_FILE_NOT_FOUND) or (C <> ERROR_PATH_NOT_FOUND);
end;
result := Logged;
end;
немножко коряво кончно :))
← →
OlegV (2003-12-02 16:32) [6]И еще вариант:
function LogOn1(ToDir: String): Boolean;
var
NetResource: _NETRESOURCEA;
Res: DWORD;
W: TForm2;
Count, i: Integer;
begin
if Copy (ToDir, 1, 2) = "\\" then begin
W := TForm2.Create (Application);
Count := 1;
W.lComputer.Caption := "Ожидается соединение с "+GetCompName(ToDir);
W.lCount.Caption := "Попытка № "+IntToStr (Count);
W.Show;
with NetResource do begin
dwType := RESOURCETYPE_ANY;
lpLocalName := nil;
lpRemoteName := PChar (GetCompName(ToDir));
lpProvider := nil;
end;
Res := 1;
Application.ProcessMessages;
while W.Status and (Res <> 0) do begin
W.lCount.Caption := "Попытка № "+IntToStr (Count);
Application.ProcessMessages;
Res := WNetAddConnection2(NetResource, "password", "administrator", 0);
if Res <>0 then
for I := 0 to 1000000000 do
Application.ProcessMessages;
Inc (Count);
end;
Result := Res = 0;
W.Free;
end;
end;
procedure LogOff1(ToDir: String);
begin
WNetCancelConnection2(PChar (GetCompName(ToDir)), 0, False);
end;
← →
Nikolay M. (2003-12-02 19:44) [7]Поставить на тот компьютер серверную часть Remote Administrator 2.0
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c