powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определение админских привилегий пользователя в системе
11 сообщений из 11, страница 1 из 1
Определение админских привилегий пользователя в системе
    #39638935
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел тут на сайте VBStreets код, который позволяет определить, является ли админом пользователь, вошедший в систему
Код можно посмотреть здесь

Что интересно.
В Access 2003 код великолепно работает, а в 2010 вылетает. Без всяких сообщений об ошибках (в операторах). Просто идёт на перезагрузку Access и предлагает послать сообщение в Microsoft.

Windows 7 - 32 bit и Windows Server 2008 R2.

Access 2010 - 32 bit 14.0.4750.1000

Access 2003 11.8321.8405 SP3

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39638985
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно падает и 2010 и 2016. Падает на функции FreeSidю Если закомментить, то работает, но память не освобождается.
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39639015
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил сейчас ещё на версии 2007. Такой же вылет на функции FreeSid.
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39639027
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C:\Windows\System32
VS
C:\Windows\SysWOW64(или где там у вас вторая библиотека)

?
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39639032
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично у меня Windows 7 (32 bit). На одной и той же машине, в одной и той же ОС программа под Access 2003 отрабатывает нормально, Под Access 2010 вылетает. (правда Access 2003 portable)
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39639039
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossЛично у меня Windows 7 (32 bit). На одной и той же машине, в одной и той же ОС программа под Access 2003 отрабатывает нормально, Под Access 2010 вылетает. (правда Access 2003 portable)так нужно понять откуда дёргает dll'ку Access 2010 и откуда дёргает Access 2003.
В каких местах у вас библиотека?
У меня на компе, например, аж в 4-х местах dll'ка...
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39639166
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что сказать? Поскольку у меня система 32-х битная, то DLL содержится только в одном месте - c:\Windows\System32\advapi32.dll
Её версия 6.1.7601.23807 от 30.06.2017
В архиве хранятся ещё 8 версий. В каталогах c:\Windows\winsxs\x86_microsoft-windows-advapi32_... начиная от 6.1.7601.17514 от 20.11.2010
Вряд ли 2003 шарится по архивам.
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39645893
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю разбираться с программой. Попробовал адаптировать её под VBA7. Поправил Вызовы функций.

Оказалось что
VBA6
Код: vbnet
1.
2.
3.
4.
    Declare Function IsValidSid Lib "Advapi32" (ByVal pSid As Long) As Long
        Dim psidAdmin           As Long
        ...
                If IsValidSid(psidAdmin) Then ' даёт 1 - TRUE


VBA7
Код: vbnet
1.
2.
3.
4.
    Declare PtrSafe Function IsValidSid Lib "advapi32.dll" (pSid As Any) As Long
        Dim psidAdmin           As Long
        ...
                If IsValidSid(psidAdmin) Then ' даёт 0 - FALSE


И как с этим бороться?

Проверялось на Access 2010 32 бит под Windows 7 32 бит
Менял только вызовы функций AP{ - больше ничего не менял.
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39646214
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот максимально упрощенная программа. Работает и функции FreeSidю
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39646221
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если отключить функции FreeSidю, то заработает и в VBA7. Вечером проверю на 64 битном варианте Access.
...
Рейтинг: 0 / 0
Определение админских привилегий пользователя в системе
    #39646602
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил под Access 64-bit - работает.

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

Определение функции
Код: vbnet
1.
Public Declare Function IsUserAdmin Lib "Shell32" Alias "IsUserAnAdmin" () As Boolean


В интернете я встречал и вот такой вызов
Код: vbnet
1.
Public Declare Function IsUserAnAdmin Lib "Shell32" Alias "#680" () As Boolean


Проверено для Windows 7 и Windows Server 2008 R2
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Определение админских привилегий пользователя в системе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]