Как определить, является ли текущий пользователь Администратором в системе Windows
Автор Joss   
11.10.2019 г.

Иногда, довольно редко, программа на Access может выполнять действия, которые разрешены только группе Администраторы Windows. Вообще-то это практически и не встречается, т.к. обычно программы на Access никуда и не лезут. Но бывают и особые случаи.

У меня было несколько программ, которые проверяли наличие в системе некоторых библиотек (например zlib), и при их отсутствии копировали их в каталог System32. На Windows 98 всё работало нормально. Но уже на Windows 2000 и XP для таких действий нужны администраторские привилегии. Можно было бы конечно попробовать перехватить ошибку при попытке копирования в системный каталог, но это выглядит не очень красиво.

 

После долгих поисков и проб вот здесь я наткнулся на упоминание функции IsUserAnAdmin из библиотеки Shell32.
MSDN об этой функции говорит следующее

 

Эта функция является оберткой для CheckTokenMembership. Рекомендуется вызвать эту функцию напрямую, чтобы определить статус группы администратора, а не вызвать IsUserAnAdmin.

 

Но при попытке использовать функцию CheckTokenMembership в программе на Access я столкнулся с определёнными трудностями. В версии 2003 всё отрабатывалось нормально, а в версии 2010 постоянно происходил крах программы. Поэтому я остановился на использовании функции IsUserAnAdmin

 

Определение функции

Public Declare Function IsUserAdmin Lib "Shell32" Alias "IsUserAnAdmin" () As Boolean

В интернете я встречал и вот такой вызов

Public Declare Function IsUserAnAdmin Lib "Shell32" Alias "#680" () As Boolean

 

Проверено для Windows XP, Windows 7 и Windows Server 2008 R2  в Access 2003 и 2010


Просмотров: 1025

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code