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

Вниз

Проверить, имеет ли пользователь права администратора домена   Найти похожие ветки 

 
RuCosinus   (2010-08-12 18:17) [0]

Добрый вечер.

Есть некий сетевой диск, на котором лежит некая программа. При запуске она должна проверять, является ли запустивший пользователь администратором домена в котором запустили приложение.

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


 
KilkennyCat ©   (2010-08-12 18:21) [1]


> произвести некое безобидное действо, выполнение которого
> разрешено только администраторам домена

ага, например, запуск этой самой программы.


 
RuCosinus   (2010-08-12 18:22) [2]

Как всегда, ищешь, ищешь и ничего... Стоит огласить вопрос, как все волшебным образом появляется.

Прошу прощения, все нашел.


 
RuCosinus   (2010-08-12 18:23) [3]


> KilkennyCat ©   (12.08.10 18:21) [1]

Не, программа лежит на расшаренном для всех диске )


 
KilkennyCat ©   (2010-08-12 18:25) [4]

какая разница, где она лежит? если так считать, то я на флэшке могу таскать кучу утилит, типа регедит, и пофиг, что я не админ, да?


 
KilkennyCat ©   (2010-08-12 18:27) [5]

да и ваще, расшарить диск можно только для админов.


 
RuCosinus   (2010-08-12 18:29) [6]


> KilkennyCat ©

А.. Я понял. Нет, там смысл в другом - если админ, то добавляются некоторые функции, обычным пользователям недоступные.


 
KilkennyCat ©   (2010-08-12 18:31) [7]

а... ну тогда манифестом можно.


 
RuCosinus   (2010-08-12 18:43) [8]

Я вот такое нашел, вроде работает... А манифестом - это как, не расскажите?

const
SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
                             (Value: (0, 0, 0, 0, 0, 5));
SECURITY_BUILTIN_DOMAIN_RID = $00000020;
DOMAIN_ALIAS_RID_ADMINS     = $00000220;

function IsAdmin: Boolean;
var
x: integer;
bSuccess: BOOL;
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
begin
Result:=false;
bSuccess:=OpenThreadToken(GetCurrentThread, TOKEN_QUERY, true, hAccessToken);
if not bSuccess
then
 begin
  if GetLastError=ERROR_NO_TOKEN
  then bSuccess:=OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);
 end;
if bSuccess
then
 begin
  GetMem(ptgGroups, 1024);
  bSuccess:=GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize);
  CloseHandle(hAccessToken);
  if bSuccess
  then
   begin
    AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
      SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
      0, 0, 0, 0, 0, 0, psidAdministrators);
    {$R-}
    for x:=0 to ptgGroups.GroupCount-1 do
     if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid)
     then
      begin
       Result:=true;
       Break;
      end;
    {$R+}
   FreeSid(psidAdministrators);
  end;
 FreeMem(ptgGroups);
end;
end;


 
KilkennyCat ©   (2010-08-12 19:02) [9]

http://msdn.microsoft.com/en-us/library/bb756929.aspx



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

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

Наверх





Память: 0.47 MB
Время: 0.003 c
6-1228604398
Caesar32
2008-12-07 01:59
2010.11.07
Веб сервис доступа к БД : SOAP + InterBase


15-1279526811
Kerk
2010-07-19 12:06
2010.11.07
Всемастаковский шахматный турнир


6-1228811420
Добежал
2008-12-09 11:30
2010.11.07
Ошибка в TIdHTTPServer


15-1278489779
Виталий
2010-07-07 12:02
2010.11.07
Неясности в формате файла


2-1281601651
Nilman
2010-08-12 12:27
2010.11.07
Подскажите как работать с типом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский