Иногда, довольно редко, программа на 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 Просмотров: 1169
Ваш коментарий будет первым | | |