Аутентификация пользователя с использованием Active Directory / Windows аутентификация в MS Access 2007 - PullRequest
1 голос
/ 29 апреля 2011

У нас есть приложение, построенное на MSAccess 2007. Мы хотим добавить новую концепцию входа пользователя в систему для этого приложения.Я хочу аутентифицировать пользователя, используя Active Directory / Windows аутентификацию. Я хочу создать файл журнала для этого пользователя.(как мы делаем для приложений .net, использующих проверку подлинности с помощью форм) Как это сделать в MS Access 2007.

Кроме того, это приложение работает 24 часа, оно не будет закрыто.Это приложение может использовать несколько пользователей.Как я уже сказал, это приложение используется круглосуточно, работает несколько смен, и разные пользователи входят и выходят из системы.Во время сеанса входа в систему и выхода из системы нам необходимо отслеживать журнал для конкретного пользователя.Это приложение использует SQL Server 2005 в качестве сервера базы данных.
Ваш совет очень полезен для меня при разработке такого рода модуля на MS Access 2007

Ответы [ 2 ]

0 голосов
/ 24 января 2013

В C # .Net использовать

Console.WriteLine("UserName: {0}", Environment.UserName);
0 голосов
/ 30 апреля 2011

Поскольку пользователь должен войти в систему на компьютере, вы можете просто получить его вход в систему, используя код из http://www.mvps.org/access/api/api0008.htm:

' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngX = apiGetUserName(strUserName, lngLen)
    If ( lngX > 0 ) Then
        fOSUserName = Left$(strUserName, lngLen - 1)
    Else
        fOSUserName = vbNullString
    End If
End Function

И следующееСценарий VBS, но он также должен работать в Access:

Отображает членство в группе и расположение Active Directory

Следующий код можно запустить для отображениячленство в группе Active Directory, а также позволяет узнать отличительное имя LDAP каждого участника.Выходные данные будут называть текстовый файл именем группы и будут включать всех участников и их расположение в Active Directory.Просто скопируйте это в текстовый файл и переименуйте в .vbs Наслаждайтесь!

Set objGroup = GetObject(“LDAP://cn=GroupName,ou=OUName,DC=DomainName,DC=local“)
Set objFileSystem = CreateObject(“Scripting.FileSystemObject”)
Set objFile = objFileSystem.OpenTextFile(objGroup.Get(“name”) & ” – Members.txt“, 2, True, 0)
For Each objMember in objGroup.Members
  objFile.WriteLine objMember.Get(“sAMAccountName”) & VbTab & _
    objMember.Get(“cn”) & VbTab & _
    objMember.Parent
Next
Set objFile = Nothing
Set objFileSystem = Nothing
Set objGroup = Nothing
...