Как узнать информацию об учетной записи Outlook в реестре с VBScript? - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь создать отчет с информацией об учетных записях пользователей для членов AD, которыми я управляю.В частности, мне нужно, какие учетные записи настроены на их установку Outlook;Какой протокол они используют (POP / IMAP) и где хранятся связанные файлы PST для целей резервного копирования.Я считаю, что могу развернуть VBScript на всех машинах, которые могут записывать в файл в общей папке, и затем я могу получить этот файл.В Интернете я нашел несколько сценариев, которые могут найти расположение файла PST в HKCU .. \ Подсистема обмена сообщениями Windows \ Профили, но не мог понять, как они анализируют шестнадцатеричные ключи.Если я смогу это выяснить, я, вероятно, смогу получить другую информацию, хранящуюся в подразделах.Буду признателен за любую помощь в решении этой проблемы.

1 Ответ

0 голосов
/ 02 ноября 2011

Наконец-то разобрался, используя указатели онлайн. В основном это сводится к трем уровням в реестре из указанного подраздела и записывает его в файл.

const HKCU = &H80000001
Const REG_SZ        = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY    = 3
Const REG_DWORD     = 4
Const REG_MULTI_SZ  = 7
strComputer = "."
Set StdOut = WScript.StdOut
Dim objFSO    :Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objPSTLog    :Set objPSTLog = objFSO.OpenTextFile("%temp%\pst.log",8,True)

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\"
oReg.EnumKey HKCU, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
    objPSTLog.WriteLine(subkey)
    strkeyPath1 = strkeyPath & subkey 'Outlook
    oReg.EnumKey HKCU, strKeyPath1, arrSubKeys1
    if IsArray(arrSubKeys1) Then
        For Each subkey1 In arrSubKeys1
            strkeyPath2 = strkeyPath1 & "\" & subkey1 'Outlook\8bce72417aa40d418ab879690e9b39cc etc
            oReg.EnumKey HKCU, strKeyPath2, arrSubKeys2
            if IsArray(arrSubKeys2) Then
                For Each subkey2 In arrSubKeys2
                    objPSTLog.WriteLine(subkey2)
                    strkeyPath3 = strkeyPath2 & "\" & subkey2 'Outlook\8bce72417aa40d418ab879690e9b39cc\0000001 etc
                    oReg.EnumValues HKCU, strKeyPath3, arrValueNames, arrTypes
                    if IsArray(arrValueNames) Then
                        For i = lBound(arrValueNames) To uBound(arrValueNames)
                            strValueName = arrValueNames(i)
                            Select Case arrTypes(i)

                              ' Show a REG_SZ value
                              '
                              Case REG_SZ          
                                oReg.GetStringValue HKCU, strKeyPath3, strValueName, strValue
                                objPSTLog.WriteLine("  " & strValueName & " (REG_SZ) = " & strValue)

                              ' Show a REG_EXPAND_SZ value
                              '
                              Case REG_EXPAND_SZ
                                oReg.GetExpandedStringValue HKCU, strKeyPath3, strValueName, strValue
                                objPSTLog.WriteLine("  " & strValueName & " (REG_EXPAND_SZ) = " & strValue)

                              ' Show a REG_BINARY value
                              '          
                              Case REG_BINARY
                                oReg.GetBinaryValue HKCU, strKeyPath3, strValueName, arrBytes
                                strBytes = ""
                                For Each uByte in arrBytes
                                  uByte = Hex(uByte)
                                  strBytes = strBytes & uByte & " "
                                Next
                                objPSTLog.WriteLine("  " & strValueName & " (REG_BINARY) = " & strBytes)

                              ' Show a REG_DWORD value
                              '
                              Case REG_DWORD
                                oReg.GetDWORDValue HKCU, strKeyPath3, strValueName, uValue
                                objPSTLog.WriteLine("  " & strValueName & " (REG_DWORD) = " & CStr(uValue))

                              ' Show a REG_MULTI_SZ value
                              '
                              Case REG_MULTI_SZ
                                oReg.GetMultiStringValue HKCU, strKeyPath3, strValueName, arrValues                             
                                objPSTLog.WriteLine("  " & strValueName & " (REG_MULTI_SZ) =")
                                For Each strValue in arrValues
                                  objPSTLog.WriteLine("    " & strValue)
                                Next
                            End Select
                        Next
                    End If
                    strKeyPath3=""
                Next
            End If
            strKeyPath2=""
        Next
        strkeyPath1 = ""
    End If
Next


objPSTLog.WriteLine("")
objPSTLog.WriteLine("--------------------------------------------------------------------------------------------------------------")
objPSTLog.WriteLine("")
objPSTLog.close

MsgBox "Script Run Successful"

Он по-прежнему записывает значения Hex. Местоположение PST хранится в «EntryID хранилища доставки», имя учетной записи и адрес электронной почты в «Имя учетной записи» и «Электронная почта». Все хранятся как REG_BINARY. Как получить вывод ASCII в регистре REG_BINARY в последнем цикле?

...