Как определить, является ли текущий пользователь Администратором в системе Windows |
Автор Joss | ||||||
11.10.2019 г. | ||||||
Иногда, довольно редко, программа на Access может выполнять действия, которые разрешены только группе Администраторы Windows. Вообще-то это практически и не встречается, т.к. обычно программы на Access никуда и не лезут. Но бывают и особые случаи. У меня было несколько программ, которые проверяли наличие в системе некоторых библиотек (например zlib), и при их отсутствии копировали их в каталог System32. На Windows 98 всё работало нормально. Но уже на Windows 2000 и XP для таких действий нужны администраторские привилегии. Можно было бы конечно попробовать перехватить ошибку при попытке копирования в системный каталог, но это выглядит не очень красиво.
После долгих поисков и проб вот здесь я наткнулся на упоминание функции IsUserAnAdmin из библиотеки Shell32.
Эта функция является оберткой для 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
|