Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

От чьего имени запущено приложение. [D6, Win2k, WinXP]


Alexey ©   (2004-04-01 10:48:00) 

Уважаемые мастера,
как узнать от чьего имени запущено приложение.
Заранее спасибо.


Alexey   (2004-04-02 13:22:00) [1]

Спасибо за помщь, все получилось.


Игорь Шевченко   (2004-04-02 10:39:00) [2]


> OpenProcessToken(PID,TOKEN_QUERY,Token);


Внимательно читаем F1 по функции OpenProcessToken и видим, что первым параметром должен быть Handle процесса.
Для этого используем функцию OpenProcess


Wiz@rd   (2004-04-02 10:32:00) [3]

Удалено модератором


Alexey   (2004-04-02 10:21:00) [4]

Помогите разобраться, что не так.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type SID_AND_ATTRIBUTES = record
   Sid: Pointer;
   Attributes:DWORD ;
end;

type TOKEN_USER = record
    SID_AND_ATTRIBUTES: DWORD;
end;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 TU: TOKEN_USER;

implementation

uses Procs;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
PID, Size: Dword;
Token: THandle;
begin
PID := FindProcess('delphi32.exe');
OpenProcessToken(PID,TOKEN_QUERY,Token);
Size:=SizeOf(TOKEN_USER);
if GetTokenInformation(Token,TokenUser,@TU,SizeOf(TOKEN_USER),Size) then
ShowMessage('Ok')
else
 ShowMessage(IntToStr(GetLastError))
end;

end.

Дает код ошибки 6.


BiN   (2004-04-02 09:41:00) [5]

Wiz@rd ©   (02.04.04 00:06) [7]

Хм... у каких именно служб не определяется?


Wiz@rd   (2004-04-02 00:06:00) [6]

Тока таким образом хрен получишь user'a типа Local Service & Network Service - по крайней мере у меня не получалось  - наверное тут OpenProcess даже с дебаг привелегиями процесс не открывает


Игорь Шевченко   (2004-04-01 15:12:00) [7]

BiN ©   (01.04.04 13:40)

Точно, ошибся, спасибо :)


Игорь Шевченко   (2004-04-01 15:12:00) [8]

+ GetTokenInformation


BiN   (2004-04-01 13:40:00) [9]

а точнее OpenProcessToken


Игорь Шевченко   (2004-04-01 13:09:00) [10]

GetProcessToken


Alexey   (2004-04-01 10:57:00) [11]

А для чужого процесса?


N170   (2004-04-01 10:55:00) [12]

GetUserName() вам поможет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо