#vbscript #outlook #registry
#vbscript #outlook #реестр
Вопрос:
Я пытаюсь создать отчет с информацией об учетных записях пользователей о членах AD, которыми я управляю. В частности, мне нужно, какие учетные записи настроены при их установке Outlook; Какой протокол они используют (POP / IMAP) и где хранятся связанные файлы PST для целей резервного копирования. Я считаю, что могу развернуть VBScript на всех компьютерах, которые могут записывать в файл в общем расположении, и затем я могу повторно просмотреть этот файл. Я нашел несколько скриптов в Интернете, которые могут найти расположение файла PST в HKCU .. Windows Messaging Subsystem Profiles, но не мог понять, как они анализируют шестнадцатеричные ключи. Если я смогу это понять, я, вероятно, смогу получить другую информацию, хранящуюся в подразделах. Буду признателен за любую помощь в решении этой проблемы.
Ответ №1:
Наконец-то разобрался с помощью онлайн-указателей. Это в основном сводится к трем уровням в реестре из указанного подраздела и записывает его в файл.
const HKCU = amp;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}!\" amp;_
strComputer amp; "rootdefault:StdRegProv")
strKeyPath = "SoftwareMicrosoftWindows NTCurrentVersionWindows Messaging SubsystemProfiles"
oReg.EnumKey HKCU, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
objPSTLog.WriteLine(subkey)
strkeyPath1 = strkeyPath amp; subkey 'Outlook
oReg.EnumKey HKCU, strKeyPath1, arrSubKeys1
if IsArray(arrSubKeys1) Then
For Each subkey1 In arrSubKeys1
strkeyPath2 = strkeyPath1 amp; "" amp; subkey1 'Outlook8bce72417aa40d418ab879690e9b39cc etc
oReg.EnumKey HKCU, strKeyPath2, arrSubKeys2
if IsArray(arrSubKeys2) Then
For Each subkey2 In arrSubKeys2
objPSTLog.WriteLine(subkey2)
strkeyPath3 = strkeyPath2 amp; "" amp; subkey2 'Outlook8bce72417aa40d418ab879690e9b39cc000001 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(" " amp; strValueName amp; " (REG_SZ) = " amp; strValue)
' Show a REG_EXPAND_SZ value
'
Case REG_EXPAND_SZ
oReg.GetExpandedStringValue HKCU, strKeyPath3, strValueName, strValue
objPSTLog.WriteLine(" " amp; strValueName amp; " (REG_EXPAND_SZ) = " amp; 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 amp; uByte amp; " "
Next
objPSTLog.WriteLine(" " amp; strValueName amp; " (REG_BINARY) = " amp; strBytes)
' Show a REG_DWORD value
'
Case REG_DWORD
oReg.GetDWORDValue HKCU, strKeyPath3, strValueName, uValue
objPSTLog.WriteLine(" " amp; strValueName amp; " (REG_DWORD) = " amp; CStr(uValue))
' Show a REG_MULTI_SZ value
'
Case REG_MULTI_SZ
oReg.GetMultiStringValue HKCU, strKeyPath3, strValueName, arrValues
objPSTLog.WriteLine(" " amp; strValueName amp; " (REG_MULTI_SZ) =")
For Each strValue in arrValues
objPSTLog.WriteLine(" " amp; 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"
Он по-прежнему записывает шестнадцатеричные значения. Местоположение PST хранится в «Хранилище доставки EntryID», имя учетной записи и адрес электронной почты в «Имя учетной записи» и «Электронная почта». Все хранятся как REG_BINARY.
Как мне получить вывод ASCII в регистре REG_BINARY в последнем цикле?