Имя пользователя
Нужно чтобы при открытии базы, для пользователей, входящих в определенную группу, не высвечивались некоторые пункты меню. Как это можно сделать или хотя бы как опознать программно, пользователь какой группы зашел в программу?
Как опознать программно, пользователь какой группы зашел в программу?
Прочесть свойство UserName
In a Microsoft Jet workspace, this represents a User object in the Users collection or a Group object in the Groups collection. For Microsoft Jet Container and Document objects, this property setting is read/write. For all Workspace objects, this property setting is read-only.
Затем найти его в группе, перечитав список групп.
Нужно чтобы при открытии базы, для пользователей, входящих в определенную группу, не высвечивались некоторые пункты меню. Как это можно сделать или хотя бы как опознать программно, пользователь какой группы зашел в программу?
Если есть домен на базе Windows 2000 Server, то можно и так:
Sub UserProperties()
Dim objSysInfo As ADSystemInfo 'Объект типа "Системная информация ActiveDirectoty"
Dim usrInfo As String 'Развернутая информация из AD о пользователе: имя, членство в группе (и подгруппах), членство в домене
Dim usrName As String 'Собственно имя пользователя
Dim x As Integer 'Вспомогательная
'Подключаемся к AD
Set objSysInfo = CreateObject("ADSystemInfo")
'Читаем развернутую информацию о текущем пользователе
usrInfo = objSysInfo.UserName
'Смотрим (для иллюстрации, конечно), что получилось
MsgBox usrInfo
'Отключаемся от AD
Set objSysInfo = Nothing
'Ищем первый слева разделитель между блоками полученных сведений (разделитель - всегда запятая)
x = InStr(1, usrInfo, ",", vbTextCompare)
'Выделяем собственно имя пользователя
usrName = Mid(usrInfo, 4, x - 4)
'Смотрим на результат
MsgBox usrName
End Sub
Примечания:
1. Код отлажен с помощью VBA из комплекта Office 2000.
2. Переменной objSysInfo можно задать тип Object, но удобнее ADSystemInfo (будет доступна "горячая" подсказка о соответствующих свойствах и методах). Однако в последнем случае к проекту необходимо подключить библиотеку "Acdive DS Type Library", иначе не будет опознан тип данных.
Подключить ее можно с помощью меню Tolls/Refernces редактора VBA.
3. Надо учитывать, что "имя входа" пользователя (то, с которым он начал сеанс работы) и "выводимое имя" его учетной записи (то, которое выводится в окне оснастки "Active Directory - пользователи и компьютеры") могут отличаться друг от друга. Приведенный пример кода позволяет получить именно "выводимое имя".
4. Аналогично тому, как выделено собственно имя пользователя, можно выделить и название группы и/или любой вложенной в нее подгруппы, членом которых он является.
Эти имена перечисляются слева - направо в порядке уменьшения вложенности (т.е. от нижнего к верхнему). Слева они обособлены выражением "OU=" (без кавычек), справа - выражением ",DC=" (без кавычек).