Warum führt das Umbenennen von reg.exe unter Windows Server 2008 x64 dazu, dass es nicht ausgeführt werden kann?

8

Ich habe hier eine nette Frage.

Es gibt ein Dienstprogramm namens reg.exe, das schon seit geraumer Zeit mit Windows ausgeliefert wird. Es ist sehr praktisch, .reg-Dateien aus Skripten zu importieren, Werte aus Skripten usw. zu ändern. Wenn Sie also eine Kopie davon für ein Skript-Szenario erstellen ("Warum nicht die Kopie in system32 verwenden?" - & gt; pref, etc) Ich bemerkte, dass das Umbenennen es stillschweigend stört:

Windows Server 2008 x64:

%Vor%

Aber mit Windows XP x86:

%Vor%

WinDbg scheint mir zu sagen, dass das CRT es tötet:

%Vor%

Aber da ich mit WinDbg nicht sehr erfahren bin (und dieses ist 64bit, also, sagen wir, Ollydbg scheitert), bin ich hier irgendwie ratlos. Danke für die Informationen, die ihr habt.

Bearbeiten

Dank der Hilfe von CyberShadow und ein bisschen Googeln habe ich die Lösung gefunden: Es sucht nach .mui (es ist die Übersetzung) in einem Unterordner der aktuellen installierten Sprache.

%Vor%     
NoName 23.02.2010, 17:21
quelle

2 Antworten

2

Wenn ich etwas mit einem Debugger herumgespielt habe, habe ich festgestellt, dass LoadString (das zum Abrufen der Verwendungs- und Fehlermeldungen verwendet wird) ERROR_MUI_FILE_NOT_LOADED zurückgibt. Ich denke, das erklärt es etwas:)

Anmerkungen:

  • Diese Stapelverfolgung scheint irreführend zu sein (oder zumindest sehen wir verschiedene Probleme mit demselben Effekt). Die Anwendung wird normal beendet, ohne dass beim Kopieren / Umbenennen etwas gedruckt wird.
  • Abgesehen davon, dass Nachrichten nicht angezeigt werden können, funktioniert das Dienstprogramm weiterhin einwandfrei.
  • Dies betrifft auch die 32-Bit-Version (die Sie in SysWOW64 finden können).
Vladimir Panteleev 24.02.2010, 04:24
quelle
0

Wild rate hier, aber einige Apps verwenden den Namen der Anwendung, um zu bestimmen, was es tun soll - das ist ein alter UNIX-Trick; Beispielsweise sind /bin/false und /bin/true identische Binärdateien, aber der Name bestimmt, welches Ergebnis zurückgegeben werden soll.

Sie tun dies, wenn Sie am Ende 2+ Programme schreiben, die zu 99,9% identisch sind, und Sie nicht für jedes separate Code-Basen pflegen wollen.

    
Paul Betts 23.02.2010 17:39
quelle