Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Windows-Passwort vergleichen

Windows-Passwort vergleichen
24.01.2023 11:59:00
Michael
Hallo zs.,
ich möchte gerne ein vom aktuellen Benutzer eingegebenes Windows-Passwort mit dem Windows-Passwort des angemeldeten Benutzers abgleichen, um zu verifizieren, dass der, der vor dem Computer sitzt tatsächlich der angemeldete Benutzer ist. (Ich möchte nicht das Windows Passwort selbst.)
Im Forumsarchiv habe ich folgenden Beitrag dazu gefunden:
https://www.herber.de/forum/archiv/872to876/874212_Windowsanmeldepasswort_vergleichen.html
Leider ist der Beitrag schon etwas älter (2007) und ich tu mir schwer, den Code an heutige Versionen anzupassen.
Das Ganze soll nicht nur bei mir lokal, sondern auch in einer Firmenumgebung funktionieren, also mit Domains und sowohl auf älteren als auch neuen Excel/Windows Versionen.
Wer kann helfen? Danke schon mal,
Michael

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Windows-Passwort vergleichen
24.01.2023 13:03:54
Nepumuk
Hallo Michael,
hier die Übersetzung in das "moderne" Excel:
Option Explicit
Private Declare PtrSafe Function CloseHandle Lib "kernel32" ( _
    ByVal hObject As LongPtr) As Long
Private Declare PtrSafe Function GetVersion Lib "kernel32" () As Long
Private Declare PtrSafe Function LogonUserA Lib "Advapi32" ( _
    ByVal lpszUserName As String, _
    ByVal lpszDomain As String, _
    ByVal lpszPassword As String, _
    ByVal dwLogonType As Long, _
    ByVal dwLogonProvider As Long, _
    ByRef phToken As LongPtr) As Long
Private Declare PtrSafe Function WNetVerifyPasswordA Lib "mpr.dll" ( _
    ByVal lpszPassword As String, _
    ByRef pfMatch As Long) As Long
Private Declare PtrSafe Function GetComputerNameA Lib "kernel32" ( _
    ByVal lpBuffer As String, _
    ByRef nSize As Long) As Long
Private Declare PtrSafe Function GetUserNameA Lib "advapi32.dll" ( _
    ByVal lpBuffer As String, _
    ByRef nSize As Long) As Long
Private Function WhereAmI() As String
    Dim s As String * 255
    GetComputerNameA s, Len(s)
    WhereAmI = Left$(s, InStr(s, vbNullChar) - 1)
End Function
Private Function WhoAmI() As String
    Dim s As String * 255
    GetUserNameA s, Len(s)
    WhoAmI = Left$(s, InStr(s, vbNullChar) - 1)
End Function
Private Function IsNT() As Boolean
    IsNT = (GetVersion And &H80000000) = 0
End Function
Public Function CheckPassword( _
    ByVal Password As String, _
    Optional ByVal UserName As String, _
    Optional ByVal Domain As String) As Boolean
    Const LOGON32_PROVIDER_DEFAULT = 0&
    Const LOGON32_LOGON_NETWORK = 3&
    Dim hToken As LongPtr
    Dim fMatch As Long
    If IsNT Then
        If UserName = "" Then UserName = WhoAmI
        CheckPassword = LogonUserA(UserName, Domain, Password, _
            LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, hToken)
        CloseHandle hToken
    Else
        If CBool(Len(Domain)) Then Exit Function
        If CBool(Len(UserName)) Then If UserName > WhoAmI Then Exit Function
        If WNetVerifyPasswordA(Password, fMatch) = 0 Then CheckPassword = CBool(fMatch)
    End If
End Function
Gruß
Nepumuk
Anzeige
AW: Windows-Passwort vergleichen
24.01.2023 17:01:05
Michael
Funktioniert wunderbar in Excel 2016 auf Win10 64-bit
Danke Nepomuk!
AW: Windows-Passwort vergleichen
24.01.2023 17:06:05
Michael
Msgbox "Sorry, " & Replace("Nepomuk","o","u")

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige