Jak mogę określić wpisy REG_EXPAND_SZ w pliku .REG?


9

Próbuję użyć skryptu wsadowego i .regpliku, aby skonfigurować niektóre niestandardowe usługi. Większość kluczy jest poprawnie skonfigurowana, ale muszę ustawić DependOnServiceklucz dla niektórych usług, który zwykle jest wielowątkowy. Czy można ustawić ten klucz z .regpliku, czy będzie wymagane ręczne wprowadzenie?

Odpowiedzi:


13

REG_MULTI_SZdane w .regplikach muszą być zakodowane w systemie szesnastkowym. Jeśli zawartość nigdy się nie zmienia, możesz utworzyć w rejestrze element zastępczy z danymi, wyeksportować go i dostosować do własnych potrzeb.

Jeśli się zmieni, prawdopodobnie znacznie łatwiej będzie użyć regprogramu dołączonego do systemu Windows, aby go dodać. Aby to zrobić, zadzwoń regw tym formacie:

Reg Add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>

Przełącznik separatora jest opcjonalny. Jeśli nie zostanie użyty, ciągi do zapisania powinny być oddzielone sekwencją zmiany znaczenia dla znaku null ( \0). Na przykład, aby dodać element o nazwie Flairaby HKLM\SOFTWARE\WhizBang\Excite-O-Ramaze strun foo, bari bazchcesz uruchomić:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz

Aby zamiast tego oddzielić dane przecinkami, uruchom:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,

Aby uzyskać więcej informacji, zobacz Dokumenty Microsoft w celu uzyskania Regpolecenia.


4
Świetna odpowiedź (użycie .batpliku z regpoleceniem zamiast .regpliku), ale dlaczego mówi o REG_MULTI_SZ, gdy pytanie dotyczy REG_EXPAND_SZ?
Norswap,

1
  • dword: = DWORD
  • hex(2): = Ciąg rozwijany
  • hex(7): = Multi-String

A DWORDjest 32-bitową liczbą całkowitą bez znaku (zakres dziesiętny: 0- 4294967295), aw rejestrze DWORDzawsze zaczyna się od 0xi ma 8 cyfr 0x. Może być w formacie dziesiętnym lub szesnastkowym; na przykład 1000można zapisać jako 0x00001000lub 0x000003e8.

DWORDSmogą korzystać tylko z cyfr 0- 9. Wszelkie ciągi znaków zawsze używają ASCII, aw ACSII 1000można je zapisać tylko jako 31,30,30,30. W przypadku typu danych Ciąg ASCII działa w tle, nawet o tym nie wiedząc, ponieważ komputer rozumie tylko jedynki i jedynki.

W przypadku typów danych Rozwijany i Wielo-ciągowy zapisują one wpisy jako serię kodów ASCII w formacie szesnastkowym, oddzielone przecinkami i zerami szesnastkowymi; więc ciąg rozwijany 1000będziehex(2):31,00,30,00,30,00,30,00

Przekształćmy %PROGRAMFILES%w ciąg rozwijany:

  1. Użyj narzędzia ASCII do konwersji heksadecymalnej , wprowadź dane %PROGRAMFILES%w polu tekstowym, Ogranicznik wyjściowy zdefiniowany przez użytkownika: %wybierz Konwertuj, a otrzymasz:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Kopiuj / wklej ten wynik do edytora tekstu: Przenieś pierwszy %do końca, Znajdź / Zamień wszystko %ze ,00,i usunąć przecinek na końcu łańcucha. Powinieneś wziąć:
    25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
  3. Wreszcie:
    hex(2):25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00

Ta lekcja zawiera całą wiedzę potrzebną do inżynierii wstecznej każdego wpisu rejestru w kodzie heksadecymalnym, który nie jest zaszyfrowany.


1
Link do pliku hotfile to po prostu archiwum 7z ze stroną HTML (zawierającą konwerter) przechowywaną w środku. Dlaczego nie po prostu link do samej strony internetowej?
John Bensin,

1
Aby uniknąć zepsucia linku, umieść w odpowiedzi wszystkie istotne informacje. Aby uzyskać więcej informacji na temat odpowiadania na pytania, zobacz Jak odpowiedzieć
50-3
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.