...если процесс был создан с помощью CreateProcessAsUser или CreateProcessWithLogon?
Другими словами, можно ли определить из-под кого был запущен некоторый процесс?
Как один из вариантов, пробовать читать из окружения нужного процесса значение переменной USERNAME.
Может быть известен более правильный/изящный путь?
Всем спасибо
28.05.03 18:38: Перенесено модератором из 'C/C++' — ПК
Re: Как определить владельца процесса?...
От:
Аноним
Дата:
02.06.03 10:21
Оценка:
Здравствуйте, slay93, Вы писали:
S>...если процесс был создан с помощью CreateProcessAsUser или CreateProcessWithLogon? S>Другими словами, можно ли определить из-под кого был запущен некоторый процесс?
S>Как один из вариантов, пробовать читать из окружения нужного процесса значение переменной USERNAME.
Подход не верен так как о данных которые попадут в окружение заботся приложение, вызывающие эти функции, со всеми вытекающими последствиями (ну поставили NULL например при вызове для lpEnvironment ).
S>Может быть известен более правильный/изящный путь?
[skip]
Более правильный путь узнать Token и получить по нему информацию ZwQueryInformationToken или GetTokenInformation.
Здравствуйте, Аноним, Вы писали:
А>Подход не верен так как о данных которые попадут в окружение заботся приложение, вызывающие эти функции, со всеми вытекающими последствиями (ну поставили NULL например при вызове для lpEnvironment ).
А я всю жизнь NULL ставлю. Насколько я помню, при этом они копируются.. А вот если не NULL поставить, то да, можно и поменять.
S>>Может быть известен более правильный/изящный путь?
А>Более правильный путь узнать Token и получить по нему информацию ZwQueryInformationToken или GetTokenInformation.
А чем GetCurrentUser не устраивает? Она, правда, возвращает для потока, но обычно это одно и то же.
Делай что должно, и будь что будет
Re[3]: Как определить владельца процесса?...
От:
Аноним
Дата:
03.06.03 06:27
Оценка:
Здравствуйте, SergH, Вы писали:
А>>Подход не верен так как о данных которые попадут в окружение заботся приложение, вызывающие эти функции, со всеми вытекающими последствиями (ну поставили NULL например при вызове для lpEnvironment ).
SH>А я всю жизнь NULL ставлю. Насколько я помню, при этом они копируются.. А вот если не NULL поставить, то да, можно и поменять.
Так ведь если выставить NULL то просто копируется переменные окружения вызывающего процесса и как следствие — фигня получается. Не делайте так
S>>>Может быть известен более правильный/изящный путь?
А>>Более правильный путь узнать Token и получить по нему информацию ZwQueryInformationToken или GetTokenInformation.
SH>А чем GetCurrentUser не устраивает? Она, правда, возвращает для потока, но обычно это одно и то же.
Так вопрос был как раз узнать из вне — так что я думаю это не подойдет .
есть GetSecurityInfo она возвращает SID владельца, если нужно имя, то LookupAccountName
Здравствуйте, slay93, Вы писали:
S>...если процесс был создан с помощью CreateProcessAsUser или CreateProcessWithLogon? S>Другими словами, можно ли определить из-под кого был запущен некоторый процесс?
S>Как один из вариантов, пробовать читать из окружения нужного процесса значение переменной USERNAME. S>Может быть известен более правильный/изящный путь?
S>Всем спасибо