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

Вниз

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

 
Smok_er   (2002-08-12 23:51) [0]

Уважаемые мастера!
Подскажите пожалуйста ответ! Кучу доков перелопатил - нигде не могу найти.


 
Poirot   (2002-08-13 04:47) [1]

Версию ос мона посмотреть ПЕРЕМЕННЫЙЕ в SysUtils или юзая GetVersionEx


 
Внук   (2002-08-13 07:52) [2]

Начиная с Win2000 появилась также VerifyVersionInfo


 
Smok_er   (2002-08-13 23:11) [3]

Спасибо! А привилегии пользователя? Именно это для меня более важно!


 
Макс Черных   (2002-08-13 23:43) [4]

Вот для примера функция, определяющая является ли
текущий пользователь администратором.
Используя разные DOMAIN_ALIAS_RID... при вызове
AllocateAndInitializeSid можно определять и другие
типы пользователей.

function IsAdmin: Boolean;
const
SECURITY_NT_AUTHORITY: SID_IDENTIFIER_AUTHORITY =
(Value: (0,0,0,0,0,5)); // ntifs

SECURITY_BUILTIN_DOMAIN_RID: DWORD = $00000020;
DOMAIN_ALIAS_RID_ADMINS: DWORD = $00000220;
DOMAIN_ALIAS_RID_USERS : DWORD = $00000221;
DOMAIN_ALIAS_RID_GUESTS: DWORD = $00000222;
DOMAIN_ALIAS_RID_POWER_: DWORD = $00000223;

var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
x: Integer;
bSuccess: BOOL;
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;


 
Smok_er   (2002-08-14 00:00) [5]

Большое спасибо! Прошу извинить за небольшой оффтопик... Сабж нужен для определения, есть ли у пользователя права писать в ветку LOCAL_MACHINE... Так вот, может кто знает, как определить, может ли юзер писАть в эту ветку или нет. Вроде как не только админы могут это делать, но и к примеру power users вроде...


 
Внук   (2002-08-14 08:51) [6]

Открой ключ реестра с правом KEY_WRITE под текущим пользователем, и сразу узнаешь :)


 
Bass   (2002-08-14 11:47) [7]

Заходишь в Windows.pas ищешь GetSecurityDescriptorGroup тискаешь F1 а потом Group и титааааааааешь!


 
Anatoly Podgoretsky   (2002-08-14 11:53) [8]

Зачем в обход, см. Внук © (14.08.02 08:51) и сразу ответ можно или нет


 
Smok_er   (2002-08-14 22:44) [9]

У меня на момент написания этих строк уже появилась идея пробной записи в LOCAL_MACHINE и обрабатывая исключение определить права пользователя. Спасибо всем!



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

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

Наверх





Память: 0.46 MB
Время: 0.016 c
7-69029
moorCat
2002-08-13 18:25
2002.10.21
Как отследить закрытие приложения?


4-69057
Asteroid
2002-09-04 22:47
2002.10.21
Полупрозраченые окна


1-68792
Lamer86
2002-10-09 19:36
2002.10.21
Как зарегистрировать ocx


3-68621
vis79
2002-09-26 13:16
2002.10.21
НЕ РАБОТАЕТ Preview в QuickReport!!


14-69020
lipskiy
2002-09-26 01:36
2002.10.21
Карманный компьютер: какой выбрать? На чем пишут софт для них?





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