2015-04-15 5 views
0

Во время экспорта команды ниже все значения находятся в шестнадцатеричном значении, хотя в редакторе Reg он отображается как обычная строка. Особенно ProfileImagePathЭкспорт реестра дает шестнадцатеричное значение

REG Export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList "

Рег редактор =

 `Name`   `Type`   `Data` 

ProfileImagePathREG_EXPAND_SZC:\Users\ABC

После экспорта появляется, как = (изменили значения гекса) слегка

"ProfileImagePath"=hex(2):43,00,3a,00,3a,5c,55,00,73,00,65,00,72,00,73,00,5c,\ 
    6b,65,00,72,00,61,00,6e,00,61,00,00,64,2e,00,64,00,65,00,65,61,70,00,61,00,\ 
    2b,00,00,2a 

Требование: Data Значение ProfileImagePath должно храниться в переменной. В случае наличия нескольких пользователей (несколько SID), затем сохраняйте в той же переменной строку с разделителем.

+0

так что вы хотите dehex данные? – npocmaka

+0

Вы спрашиваете, почему экспорт реестра выбрал для представления данных таким образом? Трудно сказать, не видя * actual * output, но при догадках, потому что строка содержит один или несколько символов, которые не разрешают формат экспорта реестра. (Это не обязательно представляет проблему с фактическим значением в реестре.) –

+0

@npocmaka, если возможен дегельминт, ... я думал, что это будет выглядеть как 'ProfileImagePath = C: \ Users \ ABC' Я хочу' C : \ Users \ ABC' – Lastwish

ответ

0

Uhh ???????

C:\Users\User>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 
    ProfilesDirectory REG_EXPAND_SZ %SystemDrive%\Users 
    Default REG_EXPAND_SZ %SystemDrive%\Users\Default 
    Public REG_EXPAND_SZ %SystemDrive%\Users\Public 
    ProgramData REG_EXPAND_SZ %SystemDrive%\ProgramData 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-18 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-19 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-20 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-21-2820837959-2753176274-143444667-1000 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-21-2820837959-2753176274-143444667-1006 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-21-2820837959-2753176274-143444667-1009 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1- 
5-21-2820837959-2753176274-143444667-500 

или

for /f "tokens=7 delims=\" %A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"') do echo %A 
+0

Кроме того, если вы знаете, какое значение вы хотите, вы можете использовать опцию '/ v'. Это может сэкономить вам некоторый синтаксический анализ. Хотя действительно для такого рода вещей вам, вероятно, лучше работать в Powershell или vbscript, а не в пакетном режиме, который на самом деле не предназначен для программирования как таковой. –

+0

Правда. Причина этого в том, что Win 95 (возможно, WfW 3.11) не поддерживает Reg_Expand_SZ. – Trigger

+0

Я думаю, что Windows NT 3 была первой с реестром. WfW все еще использовал .ini-файлы, если я правильно помню. :-) –

Смежные вопросы