Главная страница
    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.46 MB
Время: 0.003 c
15-1280041741
Loginov Dmitry
2010-07-25 11:09
2010.11.07
Пишем свой wysiwyg HTML-редактор


2-1281596062
kukuikar
2010-08-12 10:54
2010.11.07
Drag&Drop


15-1280385192
Demo
2010-07-29 10:33
2010.11.07
Oracle и Импорт дамп файла


15-1280332456
Baks
2010-07-28 19:54
2010.11.07
Как правильно разбить строку?


15-1280139716
Alekcey
2010-07-26 14:21
2010.11.07
MAC по IP





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