J'ai le code suivant (VB.NET) qui est conçu pour déterminer si un nom de compte donné fait référence à un groupe local ou à un compte d'utilisateur. Cela ne sera appelé que pour les comptes/groupes sur une machine, pas un domaine.NetUserGetInfo/NetLocalGroupGetInfo renvoyant une erreur 1722
Module netapi
Private Declare Function NetUserGetInfo Lib "Netapi32.dll" (_
ByVal ServerName As String, _
ByVal UserName As String, _
ByVal level As Integer, _
ByRef BufPtr As IntPtr) As Integer
Private Declare Function NetLocalGroupGetInfo Lib "Netapi32.dll" (_
ByVal ServerName As String, _
ByVal GroupName As String, _
ByVal level As Integer, _
ByRef BufPtr As IntPtr) As Integer
Declare Unicode Function NetApiBufferFree Lib "Netapi32.dll" _
(ByRef buffer As IntPtr) As Long
Public Function GetPrincipalType(ByVal MachineName As String, ByVal AccountName As String) As String
Dim bufPtr As IntPtr
Dim lngReturn As Integer = NetUserGetInfo("\\" & MachineName, AccountName, 0, bufPtr)
Console.WriteLine("NetUserGetInfo return value = " & lngReturn)
Call NetApiBufferFree(bufPtr)
bufPtr = IntPtr.Zero
If lngReturn = 0 Then
Return "User"
End If
lngReturn = NetLocalGroupGetInfo("\\" & MachineName, AccountName, 0, bufPtr)
Console.WriteLine("NetLocalGroupGetInfo return value = " & lngReturn)
Call NetApiBufferFree(bufPtr)
bufPtr = IntPtr.Zero
If lngReturn = 0 Then
Return "Group"
End If
Return "NotFound"
End Function
End Module
Mon problème est que le NetUserGetInfo/NetLocalGroupGetInfo appelle toujours retourner le code d'erreur 1722 (Serveur RPC indisponible). J'ai essayé d'utiliser le nom de la machine locale et le nom des serveurs Windows distants, sur lesquels j'ai des droits d'administration, avec le même résultat.
Si je remplace "\\" & MachineName
avec Nothing
j'obtiens l'erreur 2221/2220 (Utilisateur/Groupe non trouvé), peu importe si oui ou non le compte/groupe référencé par AccountName
existe réellement.
Aidez-nous s'il vous plaît. Qu'est-ce que je fais mal?
Mise à jour: Je ne sais pas si cela aide, mais j'ai essayé de courir ce qui précède à la fois Windows 7 et Windows XP SP3. Ma compilation cible le framework client .NET 4.0.
C'est ce que je manque. Merci, ça marche maintenant. –