2017-05-16 20 views
0

VB.netプログラムでは、マシン名のアクティブディレクトリを検索して「パスワードID」と同様に表示するビットロックルックアップツールを追加しようとしています。 "回復パスワード"VB.net Get Bitlocker Active DirectoryからのパスワードID

これまでのところ、私のスクリプト/コードは、ルックアップと回復パスワードの表示に完璧に機能しますが、パスワードIDを表示することができません。

私が試した:エラーを返し

Item.Properties("msFVE-RecoveryGuid")(0) 

"System.InvalidCastExceptionのを:タイプからの変換 'をバイトを()' 'string' を入力するのは有効ではありません。"返し

Item.Properties("msFVE-RecoveryGuid")(0).ToString 

"System.Byte []" "System.DirectoryServices.ResultPropertyValueCollection"

これまでのところ、私の検索では、私が唯一見たC#の例を返し

Item.Properties("msFVE-RecoveryGuid").ToString 

、および私は翻訳することができませんでした。

回復パスワードに同じしかし作品:ここ

(Item.Properties("msFVE-RecoveryPassword")(0)) 

は、私は、コンテキストのために持っているものの大きな抜粋です:

Dim RootDSE As New DirectoryEntry("LDAP://RootDSE") 
    Dim DomainDN As String = RootDSE.Properties("DefaultNamingContext").Value 
    Dim ADsearch As New DirectorySearcher("LDAP://" & DomainDN) 

    ADsearch.Filter = ("(&(objectClass=computer)(name=" & MachineName & "))") 

    Dim ADresult As SearchResult = ADsearch.FindOne 
    Dim ADpath As String = ADresult.Path 

    Dim BTsearch As New DirectorySearcher() 

    BTsearch.SearchRoot = New DirectoryEntry(ADpath) 
    BTsearch.Filter = "(&(objectClass=msFVE-RecoveryInformation))" 

    Dim BitLockers As SearchResultCollection = BTsearch.FindAll() 



    Dim Item As SearchResult 

    Dim longTempstring As String = "" 

    For Each Item In BitLockers 
     If Item.Properties.Contains("msFVE-RecoveryGuid") Then 

      Dim tempstring As String = Item.Properties("msFVE-RecoveryGuid")(0).ToString 

      longTempstring = longTempstring & tempstring & vbNewLine 
      'ListBox2.Items.Add(Item.Properties("msFVE-RecoveryGuid")(0)) 

     End If 
     If Item.Properties.Contains("msFVE-RecoveryPassword") Then 

      ListBox1.Items.Add(Item.Properties("msFVE-RecoveryPassword")(0)) 

     End If 
    Next 

    MsgBox(longTempstring) 

答えて

0

は、だから私は、私がバイトを変換するために必要なことを考え出しました16進数で、Microsoft管理コンソールで表示されているものと一致させる必要があります。私がこれをやり始めたのは、私が遭遇した唯一の問題は、バイト配列の索引付けがActive Directoryと同じ順序でないことを発見したことです。 - ループの代わりに、私はバイト配列の各インデックスをリストアップし、それらが正しい位置にソートして、それらがADでどのように表示されるかを一致させる必要がありました。

私の最後の機能は次のとおりです。

で呼び出され
Function bitread(ByVal GUID As Byte()) 
    Dim tempVar As String 
    tempVar = GUID(3).ToString("X02") & GUID(2).ToString("X02") _ 
     & GUID(1).ToString("X02") & GUID(0).ToString("X02") & "-" _ 
     & GUID(5).ToString("X02") & GUID(4).ToString("X02") & "-" _ 
     & GUID(7).ToString("X02") & GUID(6).ToString("X02") & "-" _ 
     & GUID(8).ToString("X02") & GUID(9).ToString("X02") & "-" _ 
     & GUID(10).ToString("X02") & GUID(11).ToString("X02") _ 
     & GUID(12).ToString("X02") & GUID(13).ToString("X02") _ 
     & GUID(14).ToString("X02") & GUID(15).ToString("X02") 
    Return tempVar 
End Function 

bitread(Item.Properties("msFVE-RecoveryGUID")(0)) 
関連する問題