![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение прав пользователя [D2005, XP]
periskops © (2007-10-18 21:49:00)Добрый вечер, не подскажите как программно определить под какими правами запущена прога (XP, Vista) - под админ. или ограниченными правами юзверя.
Ins (2007-10-19 12:00:00) [1]Пока писал - код привели :)
Ins (2007-10-19 11:59:00) [2]Насколько я знаю, IsUserAdmin появилась только в XP, так что если есть желание, чтобы программа работала и на NT и на 2000, то нужно:
1. Получить маркер доступа процесса или потока (в случае имперсонации) - OpenProcessToken или OpenThreadToken
2. Получить из маркера список групп - GetTokenInformation
3. Создать SID соответствующий учетной записи группы администраторов - AllocateAndInitializeSid
4. Пройтись в цикле по всем группам из токена и с помощью EqualSid сравнить их с Sid из п.3. Если хотя бы один совпал - значит админ
5. Освободить ресурсы - CloseHandle(Token), FreeSid
Правильный_Вася (2007-10-19 11:55:00) [3]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1192272904&n=18
Skyle (2007-10-19 11:44:00) [4]Только следует иметь ввиду, что админство пользователя не гарантирует наличия всех необходимых прав.
maverik (2007-10-19 09:00:00) [5]спасибо Skyle!
то что надо, не то что джамп с наводящими вопросами (:
implementation
function IsUserAnAdmin():boolean; external shell32 name 'IsUserAnAdmin';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsUserAnAdmin then Caption:='да' else Caption:='нет';
end;
Skyle (2007-10-19 08:01:00) [6]Ну так надо просто проверить возможность необходимых действий при запуске и всё.
Например попробовать получить список файлов из System32, прочитать ключ реестра и так далее. Если будет отлуп - возмутиться.
Хотя это странно на самом деле.
А вообще есть функция IsUserAnAdmin
Tests whether the current user is a member of the Administrator's group.
periskops (2007-10-18 23:59:00) [7]2Jump да без обид ;)
просто нужно знать запущена ли прога под административными правами или нет.
не то, что бы знать какой статус текущего юзверя, так как и под гостевой учетной записью можно запустить с правами администратора.
возможно я и далёк, так как чётче не могу сформулировать вопрос (:
для работы программе необходимо работать с реестром, писать в system32 и т.п. поэтому необходимо при запуске определиться что у меня есть права администратора. всякие моменты, типа и администратора можно ограничить в чем-то или тот же каспер всё таки не даст - не в счёт.
я думал может есть какая та же айпишная функция типа getRunningStatus или типа того ;)
з.ы.
прошу прощения если в чём то обидел..
за наводящие вопросы спасибо - но я пока без руля, кроме как открыть Америку ;) и по результатам судить уже...
Jump (2007-10-18 23:31:00) [8]periskops (18.10.07 23:20) [2]
Знаю. Поэтому и умничаю. Потому что ты сморозил чепуху. Я - дал тебе наводящий вопрос. Ты его проигнорировал. Да еще и хамить начал. Можешь продолжать и дальше в том же духе. Но, до тех пор, пока не сформулируешь четко вопрос - ответа не получишь. Ни от меня, ни от кого-либо другого.
одно на уме
Сдается мне, у тебя на уме совсем другое...
открыть HKEY_LOCAL_MACHINE
Колумб, однако...
periskops (2007-10-18 23:20:00) [9]2Jump - не умничай если не знаешь..
одно на уме используя TRegistry открыть HKEY_LOCAL_MACHINE
Jump (2007-10-18 22:46:00) [10]под какими правами запущена прога (XP, Vista) - под админ. или ограниченными правами юзверя
Для начала расскажи, что ты думаешь по поводу того, что такое "админ" и что такое "ограниченные права юзверя"?