55 lines
1.1 KiB
Plaintext
55 lines
1.1 KiB
Plaintext
unit DCheckRDP;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
|
|
|
|
type
|
|
TDlgCheckRDP = class(TForm)
|
|
btnCheck: TButton;
|
|
mmInfo: TMemo;
|
|
procedure btnCheckClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
DlgCheckRDP: TDlgCheckRDP;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Tocsg.Process, Tocsg.WTS, Tocsg.Safe;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TDlgCheckRDP.btnCheckClick(Sender: TObject);
|
|
var
|
|
PidList: TProcessIdList;
|
|
i: Integer;
|
|
sAccount: String;
|
|
dwSsid: DWORD;
|
|
begin
|
|
mmInfo.Clear;
|
|
|
|
Guard(PidList, TProcessIdList.Create);
|
|
if GetProcessPidsByName('winlogon.exe', PidList) = 0 then
|
|
MessageBox(Handle, PChar('¿À·ù...1'), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
|
|
for i := 0 to PidList.Count - 1 do
|
|
begin
|
|
dwSsid := 0;
|
|
if ProcessIdToSessionId(PidList[i], dwSsid) and (dwSsid <> 0) then
|
|
begin
|
|
sAccount := WTS_GetUserNameFromSessionID(dwSsid);
|
|
mmInfo.Lines.Add(IntToStr(dwSsid) + ' : ' + sAccount);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|