OVH Cloud OVH Cloud

Utilisation de LogonUser en groupe de travail et en nom de domaine

1 réponse
Avatar
Philippe HALET
Bonjour à tous,

J'essaie de me connecter sous un user déterminé afin d'accéder aux fichiers
se trouvant sur un répertoire d'un autre poste de mon réseau. J'utilise la
fonction LogonUser et ensuite ImpersonateLogedUser, malheureusement je
n'arrive pas à cette dernière. Je suis en workgroup mais l'application doit
fonctionner également avec un domaine.

Il est possible que ce soit les paramètres passé à LogonUser qui ne sont pas
corrects (le domaine en particulier). Après LogonUser, Err.LastDllError me
retourne une erreur 1326 dont je ne connaît pas la signification.

Voici ma fonction de logon:

Private Function LogonInternal(ByVal strAdminUser As String, ByVal _
strAdminPassword As String, _
ByVal strAdminDomain As String) As Boolean
Dim lngTokenHandle As Long, lngLogonType As Long, lngLogonProvider As
Long
Dim lResult As Long

LogonInternal = False

lngLogonType = LOGON32_LOGON_NETWORK
lngLogonProvider = LOGON32_PROVIDER_DEFAULT

lResult = RevertToSelf()

lResult = LogonUser(strAdminUser, "", strAdminPassword, _
lngLogonType, lngLogonProvider, _
lngTokenHandle)
If lResult = 0 Then
MsgBox "Error during logon as user [" & strAdminUser & "]" & " with
password [" & strAdminPassword & "]" & " Error code: " & Err.LastDllError
Exit Function
End If

lResult = ImpersonateLoggedOnUser(lngTokenHandle)

If lResult = 0 Then
MsgBox "Unable to become user [" & strAdminUser & "]"
Exit Function
End If

LogonInternal = True

End Function

et voici un exemple de son appel (le user "Philippe" a bien comme mot de
passe "password"):

...
LogonInternal "Philippe", "password", ""
...

Merci d'avance pour votre aide,

Philippe

1 réponse

Avatar
Philippe HALET
Après moultes recherches, je pense que la raison est qu'en environnement
workgroup les utilisateurs particuliers à une machine ne sont pas
disponibles pour l'ensemble du workgroup. La solution à cela est, me
semble-t-il, de définir sur tous les postes le user permettant d'avoir accès
aux fichiers et répertoires du poste auquel on désire se connecter
(personnellement je les définit en tant que "Remote Desktop User" afin
qu'ils n'apparaissent pas dans les utilisateurs au démarrage de XP. En
environnement "Serveur" (nt, 2000, xp ou 2003) il semble que ce soit le
serveur qui centralise cette information et autorise donc le LogonUser.
Quelqu'un peut-il valider mon analyse?
Merci d'avance,


Philippe
"Philippe HALET" wrote in message
news:41ff8126$0$533$
Bonjour à tous,

J'essaie de me connecter sous un user déterminé afin d'accéder aux


fichiers
se trouvant sur un répertoire d'un autre poste de mon réseau. J'utilise la
fonction LogonUser et ensuite ImpersonateLogedUser, malheureusement je
n'arrive pas à cette dernière. Je suis en workgroup mais l'application


doit
fonctionner également avec un domaine.

Il est possible que ce soit les paramètres passé à LogonUser qui ne sont


pas
corrects (le domaine en particulier). Après LogonUser, Err.LastDllError me
retourne une erreur 1326 dont je ne connaît pas la signification.

Voici ma fonction de logon:

Private Function LogonInternal(ByVal strAdminUser As String, ByVal _
strAdminPassword As String, _
ByVal strAdminDomain As String) As Boolean
Dim lngTokenHandle As Long, lngLogonType As Long, lngLogonProvider As
Long
Dim lResult As Long

LogonInternal = False

lngLogonType = LOGON32_LOGON_NETWORK
lngLogonProvider = LOGON32_PROVIDER_DEFAULT

lResult = RevertToSelf()

lResult = LogonUser(strAdminUser, "", strAdminPassword, _
lngLogonType, lngLogonProvider, _
lngTokenHandle)
If lResult = 0 Then
MsgBox "Error during logon as user [" & strAdminUser & "]" & "


with
password [" & strAdminPassword & "]" & " Error code: " & Err.LastDllError
Exit Function
End If

lResult = ImpersonateLoggedOnUser(lngTokenHandle)

If lResult = 0 Then
MsgBox "Unable to become user [" & strAdminUser & "]"
Exit Function
End If

LogonInternal = True

End Function

et voici un exemple de son appel (le user "Philippe" a bien comme mot de
passe "password"):

...
LogonInternal "Philippe", "password", ""
...

Merci d'avance pour votre aide,

Philippe