そこで、ツールに一定レベルのセキュリティを追加しようとして、この投稿にたどり着きました。コードはネットワーク/ドメイン上で機能しますが、リモートでネットワーク上になく、ネットワークにvpnされている人のために、これを何らかの形で使用する必要があります。これは可能ですか?ここに通いながら学んでいるので、そもそもこれは実現可能ではないかもしれません。可能な限りあらゆる手段を探しているだけです。
コード例:
Function WindowsLogin(ByVal strUserName As String, ByVal strpassword As String, ByVal strDomain As String) As Boolean
'Authenticates user and password entered with Active Directory.
On Error GoTo IncorrectPassword
Dim oADsObject, oADsNamespace As Object
Dim strADsPath As String
strADsPath = "WinNT://" & strDomain
Set oADsObject = GetObject(strADsPath)
Set oADsNamespace = GetObject("WinNT:")
Set oADsObject = oADsNamespace.OpenDSObject(strADsPath, strDomain & "\" & strUserName, strpassword, 0)
WindowsLogin = True 'ACCESS GRANTED
ExitSub:
Exit Function
IncorrectPassword:
WindowsLogin = False 'ACCESS DENIED
Resume ExitSub
End Function
編集: @ user2140261 はLogonUser
、以下のような Advapi32.dll の関数を試すことについて教えてくれました:
Private Declare Function LogonUser Lib "advapi32.dll" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As UInteger, ByVal dwLogonProvider As UInteger, ByRef phToken As IntPtr) As Boolean
Sub LoginTest()
Dim logname As String
Dim logpass As String
Dim domainstring As String
logname = "username"
logpass = "password"
domainstring = "domain.com"
Call WindowsLogin(logname, logpass, domainstring)
End Sub
何らかの理由で、これにより Excel が一斉にクラッシュします。何か理由は?