2017-02-02 1 views
1

J'utilise la classe "Win32_NetworkLoginProfile" pour extraire les informations utilisateur sur mon système local. quand j'ai exécuté "Get-WmiObject -class Win32_NetworkLoginProfile | Select *" dans Powershell de ma machine, j'obtiens Flags = 513. J'ai vérifié le lien MSDN (https://msdn.microsoft.com/en-us/library/aa394221%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396) pour les détails de cette classe. J'ai une question ici:Calcul des valeurs BitMaps BitMaps dans une classe WMI

Flags = 513 ne correspond à aucune valeur dans BitValues ​​de drapeaux. Comment puis-je savoir ce que signifie 513?

Merci.

Répondre

1

Flags = 513 au format binaire est 10 0000 0001, de sorte que vous pouvez voir que zéro et les bits neuvième sont sur, selon le link la carte est la suivante:

bit 0 = Script 
bit 1 = Account Disabled 
bit 3 = Home Dir Required 
bit 4 = Lockout 
bit 5 = Password Not Required 
bit 6 = Paswword Can't Change 
bit 7 = Encrypted Test Password Allowed 
bit 8 = Temp Duplicate Account 
bit 9 = Normal Account 
bit 11 = InterDomain Trust Account 
bit 12 = WorkStation Trust Account 
bit 13 = Server Trust Account 
bit 16 = Don't Expire Password 
bit 17 = MNS Logon Account 
bit 18 = Smartcard Required 
bit 19 = Trusted For Delegation 
bit 20 = Not Delegated 
bit 21 = Use DES Key Only 
bit 22 = Don't Require Preauthorization 
bit 23 = Password Expired 

Enfin 513 correspond Script (Un script d'ouverture de session exécuté Cette valeur doit être définie pour LAN Manager 2.0 et Windows NT/Windows 2000) et Normal Account (type de compte par défaut représentant un utilisateur type).

BTW vous pouvez récupérer la carte des qualificateurs de propriété, jetez un oeil here.

Vous pouvez suivre ces étapes pour implémenter une fonction, renvoyant des valeurs de la carte en fonction du nombre entrant. En supposant qu'un dictionnaire contenant des nombres de bits en tant que clés et les valeurs correspondantes déjà créées. WMI renvoie la valeur 513 sous forme de chaîne, vous devez le convertir en nombre, disons que c'est v variable. Créer une boucle de 31 à 0, disons pour i variable. À chaque itération, si v est supérieur ou égal à 2^i, ajoutez l'élément avec la clé i du dictionnaire au tableau de sortie, puis diminuez v par 2^i. En conséquence, le tableau de sortie contient les éléments du dictionnaire dont les clés correspondent aux nombres de bits activés dans la valeur entrante.

+0

Merci pour la réponse. Cependant, je suis à la recherche de l'implémentation où 513 est passé en paramètre, passera en binaire (1000000001) puis récupérera la valeur correspondante du mapping ci-dessus. Considérez le résultat de bit ci-dessus est enregistré dans un dictionnaire ou enum. Je ne suis pas capable de corréler les valeurs binaires aux bits définis ci-dessus. J'utilise C# comme langage de programmation de choix. – Leo

+0

@Leo vérifier ma réponse, j'ai ajouté une description de la fonction que vous avez demandé. – omegastripes