Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Verify User via NT security

Status
Not open for further replies.

PhilX

Programmer
Apr 27, 2002
13
0
0
US
I would like to be able to to verify a user by checking to determine whether they know their NT password. Is there a way to say to the OS: "Here is a user ID and password. Do they match?" ?

I'd also like to know whether my program can, if user is verified, then run with the privileges of that user. In other words, can my program login as a different user?

Thanks, Phil
 
Here it is, but you should also visit my API site that is dedicated to API calls in either C, VB or Delphi.


===========================================================

Declare Function LogonUser _
Lib "advapi32" _
Alias "LogonUserA" ( _
ByVal lpszUser As String, _
ByVal lpszDomain As String, _
ByVal lpszPass As String, _
ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, _
Handle As Long) As Long

Declare Function CloseHandle _
Lib "kernel32" (Handle As Long) As Long

Global Const LOGON32_LOGON_INTERACTIVE = 2
Global Const LOGON32_LOGON_NETWORK = 3
Global Const LOGON32_LOGON_BATCH = 4
Global Const LOGON32_LOGON_SERVICE = 5

Global Const LOGON32_PROVIDER_DEFAULT = 0

Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100

Const FORMAT_MESSAGE_FROM_HMODULE = &H800




Const NERR_BASE = 2100
Const MAX_NERR = NERR_BASE + 899 ' This is the last error in
' NERR range.
Const LOAD_LIBRARY_AS_DATAFILE = &H2
Declare Function LoadLibraryEx _
Lib "kernel32" _
Alias "LoadLibraryExA" ( _
ByVal lpLibFileName As String, _
ByVal hFile As Long, _
ByVal dwFlags As Long) As Long

Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long

Declare Function FormatMessage _
Lib "Kernel32.dll" _
Alias "FormatMessageA" ( _
ByVal Flags As Long, _
ByVal Source As Long, _
ByVal MessageID As Long, _
ByVal LanguageID As Long, _
ByVal Buffer As String, _
ByVal Size As Long, _
args As Any) As Long

Declare Function LocalFree _
Lib "Kernel32.dll" _
( _
ByVal Handle As Long) As Long

Public Function Logon(strUser As String, _
strDomain As String, _
strPass As String, _
strError As String) As Long

Dim lngError As Long
Dim lngHandle As Long

lngError = LogonUser( _
strUser, _
strDomain, _
strPass, _
LOGON32_LOGON_INTERACTIVE, _
LOGON32_PROVIDER_DEFAULT, _
lngHandle)

If lngError = 0 Then

strError = ErrorMessage(Err.LastDllError)
Logon = -1

Else

Logon = 0
lngError = CloseHandle(lngHandle)

End If

End Function

Function ErrorMessage(lCode As Long) As String

Dim lngError As Long
Dim ptrBuffer As Long
Dim strMessage As String
Dim hModule As Long
Dim lngFlags As Long
Dim str As String

lngFlags = FORMAT_MESSAGE_FROM_SYSTEM

If (lCode >= NERR_BASE And lCode <= MAX_NERR) Then
hModule = LoadLibraryEx(&quot;netmsg.dll&quot;, 0&, _
LOAD_LIBRARY_AS_DATAFILE)
If (hModule <> 0) Then
lngFlags = lngFlags Or FORMAT_MESSAGE_FROM_HMODULE
End If
End If

strMessage = Space$(256)
lngError = FormatMessage( _
lngFlags, _
hModule, _
lCode, _
0&, _
strMessage, _
256, _
0&)
If (hModule <> 0) Then
lngError = FreeLibrary(hModule)


End If
ErrorMessage = strMessage

End Function
 
Thank you Paul, I will put your code to the test...
 
Hi,
I tried to run this code, but I got an error:
&quot;A required privilege is not held by the client.&quot;
Looking around, I have found that this is due to my application not having the SE_TCB_NAME privilege, which is required for LogonUser to work. Did you run your code as a service so that it had this privilege, or did you change its privileges programatically some how (AdjustTokenPrivileges??)?
Any help would be greatly appreciated.
Thanks.
katie
 
on NT there is a environement var that give the user name
try echo %USERNAME% in Command prompt ---------------------------------------
wmail.jpg


someone knowledge ends where
someone else knowledge starts
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top