Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Имя пользователя

8.6K
21 октября 2004 года
LiP
2 / / 21.10.2004
Нужно чтобы при открытии базы, для пользователей, входящих в определенную группу, не высвечивались некоторые пункты меню. Как это можно сделать или хотя бы как опознать программно, пользователь какой группы зашел в программу?
648
22 октября 2004 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by LiP
Нужно чтобы при открытии базы, для пользователей, входящих в определенную группу, не высвечивались некоторые пункты меню. Как это можно сделать или хотя бы как опознать программно, пользователь какой группы зашел в программу?



Как опознать программно, пользователь какой группы зашел в программу?
Прочесть свойство 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.

Затем найти его в группе, перечитав список групп.

405
17 декабря 2004 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by LiP
Нужно чтобы при открытии базы, для пользователей, входящих в определенную группу, не высвечивались некоторые пункты меню. Как это можно сделать или хотя бы как опознать программно, пользователь какой группы зашел в программу?



Если есть домен на базе 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=" (без кавычек).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог