Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Scénario pour la conversion GUID dans une chaîne B. Active Directory

J'essaie de comprendre le scénario suivant VB, qui convertit GUID Dans la chaîne de l'Active Directory:

http://support.microsoft.com/d ... 25649
Cet article montre comment convertir la forme hexadécimale de l'identifiant. GUID L'objet dans la forme de la chaîne:

Insérez le code suivant dans le fichier .vbs.

'================================================================
'Set the next line to reflect a DN for an object in the directory
'================================================================
Set obj = GetObject("LDAP://CN=Username,CN=Users,DC=DOMAIN,DC=COM")
MsgBox "The GUID string Value for user " & obj.Get("DisplayName") & _
" is " & ConvertHexStringGUIDToStringGUID(obj.GUID)

'================================================================
' ConvertHexStringGUIDToStringGUID function
'================================================================
Function ConvertHexStringGUIDToStringGUID(strOctet)
Dim tmpGUID, GUIDStr
'Convert the string by flipping the bits around.
GUIDStr = Mid(strOctet, 7, 2)
GUIDStr = GUIDStr + Mid(strOctet, 5, 2)
GUIDStr = GUIDStr + Mid(strOctet, 3, 2)
GUIDStr = GUIDStr + Mid(strOctet, 1, 2)
GUIDStr = GUIDStr + Mid(strOctet, 11, 2)
GUIDStr = GUIDStr + Mid(strOctet, 9, 2)
GUIDStr = GUIDStr + Mid(strOctet, 15, 2)
GUIDStr = GUIDStr + Mid(strOctet, 13, 2)
GUIDStr = GUIDStr + Mid(strOctet, 17, Len(strOctet))

tmpGUID = "{" & Mid(GUIDStr, 1, 8) & "-" & Mid(GUIDStr, 9, 4) & _
"-" & Mid(GUIDStr, 13, 4) & "-" & Mid(GUIDStr, 17, 4) & _
"-" & Mid(GUIDStr, 21, 15) & "}"

ConvertHexStringGUIDToStringGUID = tmpGUID
End Function

J'ai une question:

Quel est le résultat de ce script?

Vous devez avoir un compte de domaine pour exécuter la commande

Set obj = GetObject("LDAP://CN=Username,CN=Users,DC=DOMAIN,DC=COM")

?
Invité:

Christine

Confirmation de:

Première réponse à la dernière question: Oui, vous avez besoin d'un compte de domaine, sinon

GetObject()

Ne réussira pas.

Quant à votre première question:

GUID

La propriété renvoie la chaîne de valeurs hexadécimales ordonnées conformément à
http://msdn.microsoft.com/en-u ... .aspx
. Depuis la première 4 Les octets sont stockés comme DWORD, Derrière lequel suivre 2 WORD, tu devrais prendre
http://en.wikipedia.org/wiki/Endianness
Dans le compte. Voitures Intel stockée WORD et DWORD directement octet (
http://en.wikipedia.org/wiki/L ... _byte
first), Donc, vous devez d'abord changer l'ordre des octets 4 octets. Le reste de la structure de données est une gamme d'octets, de sorte que ces octets sont déjà dans le bon ordre.

Exemple:

Supposons que vous ayez une telle ligne hexadécimale:

000102030405060708090a0b0c0d0e0f

Vous l'auriez brisé comme ceci:

00010203 0405 0607 08090a0b0c0d0e0f
DWORD WORD WORD BYTE[]

En raison du codage de vélo, vous devez modifier l'ordre du premier. 4 octet (Chaque hexadécimal à 2 chiffres représente 1 octet):

03020100 0504 0706 08090a0b0c0d0e0f

C'est ce que cette partie du code fait (mes commentaires):

' reverse DWORD
GUIDStr = Mid(strOctet, 7, 2)
GUIDStr = GUIDStr + Mid(strOctet, 5, 2)
GUIDStr = GUIDStr + Mid(strOctet, 3, 2)
GUIDStr = GUIDStr + Mid(strOctet, 1, 2)
' reverse 1st WORD
GUIDStr = GUIDStr + Mid(strOctet, 11, 2)
GUIDStr = GUIDStr + Mid(strOctet, 9, 2)
' reverse 2nd WORD
GUIDStr = GUIDStr + Mid(strOctet, 15, 2)
GUIDStr = GUIDStr + Mid(strOctet, 13, 2)

Le reste de la chaîne est une gamme d'octets, de sorte que ces octets sont utilisés dans l'ordre suivant:

GUIDStr = GUIDStr + Mid(strOctet, 17, Len(strOctet))

Les instructions suivantes forment une ligne hexadécimale dans une chaîne GUID, Numéros de regroupement appropriés (8-4-4-4-12):

tmpGUID = "{" & Mid(GUIDStr,  1,  8) & "-" & Mid(GUIDStr,  9, 4) & _
"-" & Mid(GUIDStr, 13, 4) & "-" & Mid(GUIDStr, 17, 4) & _
"-" & Mid(GUIDStr, 21, 15) & "}"

Le résultat est la ligne suivante:

{03020100-0504-0706-0809-0a0b0c0d0e0f}

Voir également
http://blogs.msdn.com/b/ericli ... .aspx
D'Eric Lippert pour une explication plus détaillée.

Pour répondre aux questions, connectez-vous ou registre