Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

Определение прав пользователя   Найти похожие ветки 

 
periskops   (2007-10-18 21:49) [0]

Добрый вечер, не подскажите как программно определить под какими правами запущена прога (XP, Vista)  - под админ. или ограниченными правами юзверя.


 
Jump   (2007-10-18 22:46) [1]

под какими правами запущена прога (XP, Vista)  - под админ. или ограниченными правами юзверя

Для начала расскажи, что ты думаешь по поводу того, что такое "админ" и что такое "ограниченные права юзверя"?


 
periskops   (2007-10-18 23:20) [2]

2Jump - не умничай если не знаешь..

одно на уме используя  TRegistry  открыть HKEY_LOCAL_MACHINE


 
Jump   (2007-10-18 23:31) [3]

periskops   (18.10.07 23:20) [2]

Знаю. Поэтому и умничаю. Потому что ты сморозил чепуху. Я - дал тебе наводящий вопрос. Ты его проигнорировал. Да еще и хамить начал. Можешь продолжать и дальше в том же духе. Но, до тех пор, пока не сформулируешь четко вопрос - ответа не получишь. Ни от меня, ни от кого-либо другого.

одно на уме

Сдается мне, у тебя на уме совсем другое...

открыть HKEY_LOCAL_MACHINE

Колумб, однако...


 
periskops   (2007-10-18 23:59) [4]

2Jump да без обид ;)

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

возможно я и далёк, так как чётче не могу сформулировать вопрос (:
для работы программе необходимо работать с реестром, писать в system32 и т.п. поэтому необходимо при запуске определиться что у меня есть права администратора. всякие моменты, типа и администратора можно ограничить в чем-то или тот же каспер всё таки не даст - не в счёт.
я думал может есть какая та же айпишная функция типа getRunningStatus или типа того ;)

з.ы.
прошу прощения если в чём то обидел..
за наводящие вопросы спасибо - но я пока без руля, кроме как открыть Америку ;)  и по результатам судить уже...


 
Skyle ©   (2007-10-19 08:01) [5]

Ну так надо просто проверить возможность необходимых действий при запуске и всё.

Например попробовать получить список файлов из System32, прочитать ключ реестра и так далее. Если будет отлуп - возмутиться.

Хотя это странно на самом деле.

А вообще есть функция IsUserAnAdmin
Tests whether the current user is a member of the Administrator"s group.


 
maverik   (2007-10-19 09:00) [6]

спасибо 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 11:44) [7]

Только следует иметь ввиду, что админство пользователя не гарантирует наличия всех необходимых прав.


 
Правильный_Вася   (2007-10-19 11:55) [8]

http://delphimaster.net/view/2-1192272904/


 
Ins ©   (2007-10-19 11:59) [9]

Насколько я знаю, IsUserAdmin появилась только в XP, так что если есть желание, чтобы программа работала и на NT и на 2000, то нужно:
1. Получить маркер доступа процесса или потока (в случае имперсонации) - OpenProcessToken или OpenThreadToken
2. Получить из маркера список групп - GetTokenInformation
3. Создать SID соответствующий учетной записи группы администраторов - AllocateAndInitializeSid
4. Пройтись в цикле по всем группам из токена и с помощью EqualSid сравнить их с Sid из п.3. Если хотя бы один совпал - значит админ
5. Освободить ресурсы - CloseHandle(Token), FreeSid


 
Ins ©   (2007-10-19 12:00) [10]

Пока писал - код привели :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 3.605 c
2-1192795996
Sat
2007-10-19 16:13
2007.11.11
получить данные с сервера


2-1192947528
Lebedev
2007-10-21 10:18
2007.11.11
Как из Label сделать таймер?


2-1192617485
malyar
2007-10-17 14:38
2007.11.11
месага от колёсика мыши


2-1192536340
Kolan
2007-10-16 16:05
2007.11.11
Variant := := StrToInt( 1 ) приводит к исключению, почему?


2-1192695391
Lebedev
2007-10-18 12:16
2007.11.11
Как в своей процедуре создать динамический объект?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский