Bonjour,

Suit à de nombreux posts sur ce site j'ai pu écrire une procédure permettant de récupérer le SID d'un utilisateur depuis Active Directory.
Mon problème est le suivant :

Au moment de l'exécution de mon formulaire il me dit :
La conversion de la chaîne '5-1-1-1' en type 'long' n'est pas valide"
Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
Private Sub Bt_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_ok.Click
 
 
        ' Tableau d'octets qui va contenir le SID
        Dim sidUser As Byte() = Nothing
 
        Try
 
            ' Récupération du SID de l'objet souhaité
            Dim Ldap As DirectoryEntry = New DirectoryEntry("LDAP://srv2003:389/CN=util1,OU=utilisateur,DC=test", "Administrateur@test", "admin")
 
            sidUser = CType(Ldap.Properties("objectSid").Value, Byte())
 
        Catch ex As Exception
 
            MessageBox.Show(ex.Message)
 
        End Try
 
        'Formatage du SID en format connu
 
        Dim nombreSubauthority As Short = 0
        Dim monSid As StringBuilder = New StringBuilder
 
        monSid.Append("S-")
 
        Try
            monSid.Append(sidUser(0).ToString)
            nombreSubauthority = Convert.ToInt16(sidUser(1))
 
            If Not (sidUser(2) = 0) OrElse Not (sidUser(3) = 0) Then
 
                Dim strAuth As String = String.Format("0x{0:2x}{1:2x}{2:2x}{3:2x}{4:2x}{5:2x}", _
                                        CType(sidUser(2), Int16), _
                                        CType(sidUser(3), Int16), _
                                        CType(sidUser(4), Int16), _
                                        CType(sidUser(5), Int16), _
                                        CType(sidUser(6), Int16), _
                                        CType(sidUser(7), Int16))
 
                monSid.Append("-")
                monSid.Append(strAuth)
 
            Else
 
                Dim iVal As Int64 = CLng(CType((sidUser(7)), Int32) & _
                                    CType((sidUser(6) < 8), Int32) & _
                                    CType((sidUser(5) < 16), Int32) & _
                                    CType((sidUser(4) < 24), Int32))
 
                monSid.Append("-")
                monSid.Append(iVal.ToString)
 
            End If
 
            Dim idxAuth As Integer = 0
            Dim i As Integer = 0
 
            While i < nombreSubauthority
 
                idxAuth = 8 + i * 4
 
                Dim iSubAuth As UInt32 = BitConverter.ToUInt32(sidUser, idxAuth)
 
                monSid.Append("-")
                monSid.Append(iSubAuth.ToString)
 
                i += 1
 
            End While
 
        Catch ex As Exception
 
            MsgBox(ex.Message)
 
        End Try
 
        MsgBox(monSid.ToString)
 
End Sub
Si quelqu'un peut m'aiguiller sur ce problème je l'en remercie d'avance.