![]() |
Computername des Remotedesktop-benuzter herausfiden
Hi, :P
Ich muss mit einem programm, das auf einem remote-desktop-verbindungs-rechner lauft(termialserver), den Computernamen des pc's der die verbindung benutzt (also client) herausfinden. Habe leider keinen plan wie das gehen soll :? ich hoffe das weiss einer von euch da an den monitoren danke! gruss niko :-D :-D :-D |
Re: Computername des Remotedesktop-benuzter herausfiden
Hallo Nico,
da gibts API-Funktionen zu. Schau mal auf der Seite hier ![]() |
Re: Computername des Remotedesktop-benuzter herausfiden
Ich komm da nur leider nicht dran (die .pas habich) (computername)
Welche funktion soll ich nehmen? ps: Auf dem server laufen viele sessions! |
Re: Computername des Remotedesktop-benuzter herausfiden
Hallo Niko,
Zitat:
Mit GetComputername kommst du natürlich nur an deinen eigenen Computernamen dran. Du mußt dir halt die Sessions auflisten und durchlaufen. An bestimmte Infos darfst du auch nur mit ADminrechten dran. Der folgende Code listete alle Rechenrnamen auf der Sitzungen auf die sich auf dem lokalen Server befinden.
Delphi-Quellcode:
Der Code ist aus ner bestehenden Funktion rauskopiert und geändert worden. Bitte nicht erwarten das er so funktioniert. Er soll auch mehr als Anhaltspunkt dienen wie man sowas macht.
hServer := WTSOpenServer(NIL);
if (hServer <> 0) then begin if WTSEnumerateSessions(hServer, 0, 1, SessionPtr, nCount ) then begin WorkPtr := SessionPtr; for i:=1 to nCount do begin if WTSQuerySessionInformation(hServer, WorkPtr^.SessionId, WTSClientName, acNameBuff, nByteCount) then begin sName := StrPas(PChar(acNameBuff)); // in sName steht jetzt der Rechnername drin WTSFreeMemory(acNameBuff); end; // if WTSQuerySessionInformation inc(WorkPtr); end; // for i:=1 to nCount end; // if WTSEnumerateSessions(hServer ... WTSFreeMemory(SessionPtr); end; |
Re: Computername des Remotedesktop-benuzter herausfiden
Vielen dank!
Aber ich will ja eigentlich nicht alle namen von alle sessions sondern nur den von der session auf der das prog läuft. leider hab ich auch keine adminrechte |
Re: Computername des Remotedesktop-benuzter herausfiden
Hallo Niko,
an deine eigene Sessiondaten müßtest du auch ohne Adminrechte ran kommen. Die folgende Lösung sollte eigentlich so funktionieren:
Delphi-Quellcode:
und sorgt zumindest bei mir dafür das nach Knopfdruck in Edit1 der Rechnername steht.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jwaWTSAPI32, jwaWinBase; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var nProcessID, nSessionID, nByteCount : DWORD; acNameBuff : Pointer; begin nProcessID := GetCurrentProcessId; if ProcessIdToSessionID( nProcessID, nSessionID) then begin if nSessionID > 0 then begin if WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, nSessionId, WTSClientName, acNameBuff, nByteCount) then begin Edit1.Text := StrPas(PChar(acNameBuff)); // in sName steht jetzt der Rechnername drin WTSFreeMemory(acNameBuff); end; end; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz