Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Win10: Narrator.exe

37 views
Skip to first unread message

Herbert Kleebauer

unread,
Feb 6, 2022, 10:00:15 AM2/6/22
to
Ich kann die Sprachausgabe durch <WIN>>CTRL><RETURN>
starten, würde das aber gerne durch ein

%windir%\system32\narrator.exe

in einer Batch machen. Aber alles was ich bekomme ist:

Der Befehl "C:\WINDOWS\system32\narrator.exe" ist entweder
falsch geschrieben oder konnte nicht gefunden werden.

Der Windows Explorer zeigt die Datei (522 kB) an und ich kann sie
auch durch einen Doppelklick starten. 'dir' in einem CMD-Fenster
zeigt die Datei aber nicht an und deshalb funktioniert obiger
Befehl auch nicht.

Ich kann die Datei im Explorer auch kopieren, so dass es dann
ein narrator2.exe gibt, die kann im Explorer aber nicht mehr
gestartet werden (keine Fehlermeldug) und wird in 'dir' auch nicht
angezeigt. Ich habe die Datei dann als narrator3.exe in mein
normales Arbeitsverzeichnis kopiert, dort ist sie dann auch mit
'dir' sichtbar und enthält ein normale exe binary. Ausführen ist
allerdings nicht möglich:

Diese Anwendung konnte nicht gestartet werden, da die
Side-by-Side-Konfiguration ungültig ist.

Mit dem Explorer zurückkopiert verhält sie sich wie narrator2.exe
(für 'dir' nicht sichtbar). Wenn ich sie dagegen als narrator4.exe
im CMD Fenster zurück kopiere, dann ist sie mit 'dir' in system32
sichtbar, nicht aber im Explorer (da gibt es nur narrator2.exe und
narrator3.exe. Weiß jemand was da los ist?

Takvorian

unread,
Feb 6, 2022, 1:57:31 PM2/6/22
to
Herbert Kleebauer schrieb:

> Weiß jemand was da los ist?

Du versuchst das offensichtlich mit der 32-Bit-Version von cmd.exe, da hat
man dieses Verhalten. Du musst die 64er-cmd.exe nehmen. Damit wird die Datei
angezeigt und ist auch startbar. Auf welchem krummen Weg kommst du zu der
32er-Version? Es ist doch wohl ein 64er-Windows?

Herbert Kleebauer

unread,
Feb 6, 2022, 2:29:49 PM2/6/22
to
Der Auslöser war wohl der Midnight Commander (der läuft bei mir
eigentlich in jedem CMD Fenster). Bei einem reinen CMD Fenster
findet 'dir' tatsächlich die Datei und sie kann auch gestartet werden.

Aber der eigentlich Schuldige scheint mir Microsoft zu sein.
Wie kann es denn sein, das ein kleiner Teil der Dateien in
system32 von der 32-Bit-Version von cmd.exe nicht angezeigt
wird und umgekehrt, wenn ich damit eine Datei rein kopiere,
zeigt sie der Explorer nicht an. Kennst du eine Stelle, wo das
genauer dokumentiert ist?





Stefan Kanthak

unread,
Feb 6, 2022, 3:25:12 PM2/6/22
to
"Herbert Kleebauer" <kl...@unibwm.de> schrieb:

> On 06.02.2022 19:57, Takvorian wrote:
>
>>> Weiß jemand was da los ist?
>>
>> Du versuchst das offensichtlich mit der 32-Bit-Version von cmd.exe, da hat
>> man dieses Verhalten. Du musst die 64er-cmd.exe nehmen. Damit wird die Datei
>> angezeigt und ist auch startbar. Auf welchem krummen Weg kommst du zu der
>> 32er-Version? Es ist doch wohl ein 64er-Windows?
>
> Der Auslöser war wohl der Midnight Commander (der läuft bei mir
> eigentlich in jedem CMD Fenster).

AUTSCH bzw. PEBKAC: "a fool with a tool is still a fool"!

> Bei einem reinen CMD Fenster findet 'dir' tatsächlich die Datei und sie kann
> auch gestartet werden.
>
> Aber der eigentlich Schuldige scheint mir Microsoft zu sein.

Falsch: nur Deine falschen Erwartungen bzw. Deine Ahnungslosigkeit
und der auf Deiner Installation UNBRAUCHBARE 32-bittige Schrott!

> Wie kann es denn sein, das ein kleiner Teil der Dateien in
> system32 von der 32-Bit-Version von cmd.exe nicht angezeigt
> wird

Guten Morgen: unter welchem Stein hast Du Dich seit dem letzten
Jahrtausend verkrochen?

PEBKAC: fuer unter 64-bittigen Windows-Installationen laufende
32-bittige Programme wird %SystemRoot%\System32\ (per Default)
auf %SystemRoot%\SysWoW64\ umgeleitet.

> und umgekehrt, wenn ich damit eine Datei rein kopiere,
> zeigt sie der Explorer nicht an.

Wie oben: das 32-bittige Programm hat die Datei dummerweise in
%SystemRoot%\SysWoW64\ (oder gar unter %LOCALAPPDATA%\VirtualStore\...)
abgelegt; in ersterem (d.h. in seinem "application directory")
findet ein 64-bittiges Programm zuerst die fuer es unbrauchbaren
32-bittigen DLLs...
<https://msdn.microsoft.com/en-us/library/ms682586.aspx>

> Kennst du eine Stelle, wo das genauer dokumentiert ist?

<https://msdn.microsoft.com/en-us/library/aa384187.aspx>
<https://msdn.microsoft.com/en-us/library/aa365744.aspx>
<https://msdn.microsoft.com/en-us/library/aa365745.aspx>
<https://msdn.microsoft.com/en-us/library/ms724405.aspx>

Stefan
--
<https://www.duden.de/rechtschreibung/Kanthaken>

Herbert Kleebauer

unread,
Feb 6, 2022, 3:59:16 PM2/6/22
to
On 06.02.2022 20:29, Herbert Kleebauer wrote:
> On 06.02.2022 19:57, Takvorian wrote:

>> Du versuchst das offensichtlich mit der 32-Bit-Version von cmd.exe, da hat
>> man dieses Verhalten. Du musst die 64er-cmd.exe nehmen. Damit wird die Datei
>> angezeigt und ist auch startbar. Auf welchem krummen Weg kommst du zu der
>> 32er-Version? Es ist doch wohl ein 64er-Windows?
>

Habe noch ein bisschen experimentiert. Glaube nicht, dass das etwas
mit einer 32 Bit Version zu tun hat. Wenn ich aus der CMD shell
mit dem Midnight Commander ein neues CMD Fenster öffne durch:

start %windir%\system32\cmd.exe

dann findet 'dir' in diesem CMD Fenster narrator.exe auch nicht.
Die Unfähigkeit die Datei zu finden wird anscheinend vererbt
(vielleicht irgendwelche Umgebungsvariablen).

Ohne MC:

CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)



Aus MC mit start %windir%\system32\cmd.exe geöffnetes Fenster:

CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files

ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)


Das händische Ändern der Variablen hat aber auch nichts gebracht.
Im Gegenteil, wenn man dann aus diesem Fenster ein weiteres durch
start %windir%\system32\cmd.exe öffnet, steht dort das (x86) wieder drin.

Herbert Kleebauer

unread,
Feb 6, 2022, 4:09:04 PM2/6/22
to
Ich hätte gern mein DOS 6.22 wieder!!!!

Takvorian

unread,
Feb 6, 2022, 4:16:59 PM2/6/22
to
Herbert Kleebauer schrieb:

> Habe noch ein bisschen experimentiert. Glaube nicht, dass das etwas
> mit einer 32 Bit Version zu tun hat.

Doch, hat es. Du hast es gerade eben ja selbst bestätigt.

> Wenn ich aus der CMD shell
> mit dem Midnight Commander ein neues CMD Fenster öffne durch:
> start %windir%\system32\cmd.exe
> dann findet 'dir' in diesem CMD Fenster narrator.exe auch nicht.

Weil dann eben das passiert, was Stefan gerade erklärt hat.
Einfach den Prozess Explorer oder den Task Manager starten und die
gestartete CMD prüfen. Da sieht man sofort, ob 32 oder 64.

Takvorian

unread,
Feb 6, 2022, 4:27:40 PM2/6/22
to
Herbert Kleebauer schrieb:
Dass 32-Bit-Programme frech lügen und Syswow64 als System32 anzeigen,
sollte eigentlich bekannt sein. Es gibt genügend brauchbare Dateimanager,
niemand muss mehr Schrott wie "Steinzeit Commander" verwenden und sich damit
selbst zum Narren halten.

Herbert Kleebauer

unread,
Feb 6, 2022, 5:08:06 PM2/6/22
to
Also nochmals für Dumme wie mich:

Es gibt zwei verschiedene cmd.exe

C:\Windows\System32\cmd.exe Trotz des "System32" ist das die 64 Bit Version
C:\Windows\SysWOW64\cmd.exe Trotz des "SysWOW64" ist das die 32 Bit Version

Die 64 Bit Version findet das Programm %windir%\system32\narrator.exe
die 32 Bit Version nicht. Ich möchte aber ein Batch-Programm schreiben,
dass dieses Programm ausführt auch wenn, verursacht z.B. durch den
Midnight Commander, die 32 Bit cmd aktiv ist.

Auf meinem Rechner kann ich mir z.B. die 64 Bit Version nach D:\cmd.exe
kopieren und dann in der Batch verwenden:

start d:\cmd.exe /c start /min %windir%\system32\narrator.exe

Das startet dann die Sprachausgabe, egal von welcher cmd die Batch
abgearbeitet wird. Aber wie mache ich das ohne die 64 Bit cmd.exe
zu kopieren. Die Batch soll ja auf jedem beliebigen Rechner
ausführbar sein. Gibt es also einen Alternativpfad zu
C:\Windows\System32\ der nicht von Windows auf C:\Windows\SysWOW64\
umgeleitet werden kann.







Stefan Kanthak

unread,
Feb 6, 2022, 5:46:10 PM2/6/22
to
"Herbert Kleebauer" <kl...@unibwm.de> schrieb:

[...]

> Also nochmals für Dumme wie mich:
>
> Es gibt zwei verschiedene cmd.exe
>
> C:\Windows\System32\cmd.exe Trotz des "System32" ist das die 64 Bit Version
> C:\Windows\SysWOW64\cmd.exe Trotz des "SysWOW64" ist das die 32 Bit Version
>
> Die 64 Bit Version findet das Programm %windir%\system32\narrator.exe
> die 32 Bit Version nicht.

Korrekt: auf 64-bittigem Windows gibt's keine 32-bittige NARRATOR.exe!

> Ich möchte aber ein Batch-Programm schreiben,
> dass dieses Programm ausführt auch wenn, verursacht z.B. durch den
> Midnight Commander, die 32 Bit cmd aktiv ist.

--- dummy.cmd ---
If "%PROCESSOR_ARCHITECTURE%" == "AMD64" Goto :AMD64
If "%PROCESSOR_ARCHITEW6432%" == "AMD64" Goto :WOW6432
If "%PROCESSOR_ARCHITECTURE%" == "x86" Goto :I386
Exit /B

AMD64:
"%SystemRoot%\System32\NARRATOR.exe" ...
Exit /B

WOW6432:
"%SystemRoot%\SysNative\NARRATOR.exe" ...
Exit /B

I386:
"%SystemRoot%\System32\NARRATOR.exe" ...
Exit /B
--- EOF ---

Die Vereinfachung sowie eine ggf. notwendige aber triviale Erweiterung
fuer AARCH64 ueberlasse ich Dir als Hausaufgabe.

JFTR: das wirrtuelle Verzeichnis %SystemRoot%\SysNative\... gibt's
aber erst seit knapp 20 Jahren ... siehe den MSKB-Artikel 942589

Stefan
--
<https://www.duden.de/rechtschreibung/Kanthaken>

Takvorian

unread,
Feb 7, 2022, 4:34:35 AM2/7/22
to
Herbert Kleebauer schrieb:

> On 06.02.2022 22:16, Takvorian wrote:
>> Herbert Kleebauer schrieb:
>>
>>> Habe noch ein bisschen experimentiert. Glaube nicht, dass das etwas
>>> mit einer 32 Bit Version zu tun hat.
>>
>> Doch, hat es. Du hast es gerade eben ja selbst bestätigt.
>>
>>> Wenn ich aus der CMD shell
>>> mit dem Midnight Commander ein neues CMD Fenster öffne durch:
>>> start %windir%\system32\cmd.exe
>>> dann findet 'dir' in diesem CMD Fenster narrator.exe auch nicht.
>>
>> Weil dann eben das passiert, was Stefan gerade erklärt hat.
>> Einfach den Prozess Explorer oder den Task Manager starten und die
>> gestartete CMD prüfen. Da sieht man sofort, ob 32 oder 64.
>
> Also nochmals für Dumme wie mich:
> Es gibt zwei verschiedene cmd.exe
> C:\Windows\System32\cmd.exe Trotz des "System32" ist das die 64 Bit Version
> C:\Windows\SysWOW64\cmd.exe Trotz des "SysWOW64" ist das die 32 Bit Version

So isses.

> Die 64 Bit Version findet das Programm %windir%\system32\narrator.exe
> die 32 Bit Version nicht. Ich möchte aber ein Batch-Programm schreiben,
> dass dieses Programm ausführt auch wenn, verursacht z.B. durch den
> Midnight Commander, die 32 Bit cmd aktiv ist.

Man braucht da keine Batch-Datei. Eine einfache Verknüpfung auf dem Desktop:
%systemroot%\system32\narrator.exe
startet die Sprachausgabe, auch wenn gleichzeitig schon eine 32-Bit-CMD
aktiv ist. Oder siehe die Batchdatei von Stefan.

> Auf meinem Rechner kann ich mir z.B. die 64 Bit Version nach D:\cmd.exe
> kopieren und dann in der Batch verwenden:

Das wäre ein Schildbürger-Streich.

Herbert Kleebauer

unread,
Feb 7, 2022, 6:28:09 AM2/7/22
to
On 06.02.2022 23:42, Stefan Kanthak wrote:

> --- dummy.cmd ---
> If "%PROCESSOR_ARCHITECTURE%" == "AMD64" Goto :AMD64
> If "%PROCESSOR_ARCHITEW6432%" == "AMD64" Goto :WOW6432
> If "%PROCESSOR_ARCHITECTURE%" == "x86" Goto :I386
> Exit /B
>
> AMD64:
> "%SystemRoot%\System32\NARRATOR.exe" ...
> Exit /B
>
> WOW6432:
> "%SystemRoot%\SysNative\NARRATOR.exe" ...
> Exit /B
>
> I386:
> "%SystemRoot%\System32\NARRATOR.exe" ...
> Exit /B
> --- EOF ---

Hab keine Ahnung was sich Microsoft dabei gedacht hat.
Wenn dann zumindest %SystemRoot%\SysNative\ auch im 64 Bit
Mode existieren würde, dann könnte man einfach immer
"%SystemRoot%\SysNative\NARRATOR.exe" benutzen und
es würde mit beiden cmd Versionen funktionieren.

Bei einem 32 Bit cmd.exe findet ein "dir %SystemRoot%\Sys*"
gar kein SysNative aber "cd %SystemRoot%\SysNative"
funktioniert trotzdem.


> JFTR: das wirrtuelle Verzeichnis %SystemRoot%\SysNative\... gibt's
> aber erst seit knapp 20 Jahren ... siehe den MSKB-Artikel 942589

Mag sein, aber alles nach DOS 6 betrachte ich als black box
von der ich erwarte, das ich damit Anwendungsprogramme starten
kann und die ansonsten einfach funktioniert ohne mich zu
belästigen. Ein Rechner ist ein Arbeitsgerät und kein Mittel
zur Selbstbeschäftigung. Ich benutze auch ein Auto um von
A nach B zu kommen und nicht um das Motormanagementsystem zu
analysieren.

Nur wenn jetzt sogar das Starten von exe Programmen nicht
funktioniert weil Windows heimlich im Hintergrund andere
Verzeichnisinhalte vortäuscht als tatsächlich auf der
Platte gespeichert sind, dann wir es echt schlimm. Es
spricht ja nichts gegen virtuelle Verzeichnisse, aber die
realen Verzeichnisse sollten immer unter ihren richtigen
Namen erreichbar sein.

--------------------------------------------------------

Hab jetzt mal versucht in 32 Bit cmd das Programm durch

C:\WINDOWS\SysNative\Narrator.exe

auszuführen, allerdings vergeblich. Das Programm startet
anscheinend, bring dann aber die Fehlermeldung

C:\WINDOWS\SysNative\Narrator.exe
Der angegebene Pfad ist nicht vorhanden

Es will wohl auf seine eigene exe Datei zugreifen und
da es als 64 Bit Programm läuft existiert dann der
Pfad C:\WINDOWS\SysNative\ nicht mehr, obwohl es von
dort gestartet wurde.


--------------------------------------------------------

Hab jetzt eine Version die mit 64 und 32 Bit CMD funktioniert.
Die Datei spell.txt enthält Wörter die von dem BATCH
Programm einzeln angezeigt und vorgelesen werden.


@echo off
if [%1]==[] goto :l1
for /f %%i in (spell.txt) do (
echo %%i
timeout /t 4 >nul)
exit

:l1
set p=
if exist %windir%\SysNative\cmd.exe set p=%windir%\SysNative\cmd.exe /c start ""
start "" %p% /min %windir%\system32\narrator.exe
timeout /t 4 >nul
start "" "%~f0" xxx
exit



Takvorian

unread,
Feb 7, 2022, 7:15:25 AM2/7/22
to
Herbert Kleebauer schrieb:

> Mag sein, aber alles nach DOS 6 betrachte ich als black box

Eine völlig absurde Vorstellung, von der man sich aber sowas von
blitzschnell verabschieden muss....

> von der ich erwarte, das ich damit Anwendungsprogramme starten
> kann

Das ist der Fall, aber nach den aktuellen Windows-Regeln, nicht nach den
Regeln von Steinzeit-DOS, logischerweise.

> und die ansonsten einfach funktioniert ohne mich zu belästigen.

Betriebssysteme sind hochkomplexe Software, für die man das unbedingt
erforderliche Wissen haben muss. Zu glauben, ein modernes OS könne man mit
dem Wissen von DOS betreiben, ist völlig absurd.

> Ein Rechner ist ein Arbeitsgerät und kein Mittel
> zur Selbstbeschäftigung.

Und ein Auto ist ein Fahrgerät und kein Mittel zur Selbstbeschäftigung?
Versuche mal, mit der Behauptung den Lehrgang und die Prüfung abzulehnen.
Die Behauptung ist natürlich auch absurd.

> Ich benutze auch ein Auto um von
> A nach B zu kommen und nicht um das Motormanagementsystem zu
> analysieren.

Nicht alles, was hinkt, ist ein Vergleich. Das CMD-Problem ist vergleichbar
mit dem Führerschein-Lehrgang und NICHT vergleichbar mit Motormanagement,
nicht vergleichbar mit dem Programmkode von Windows.

> Nur wenn jetzt sogar das Starten von exe Programmen nicht
> funktioniert weil Windows heimlich im Hintergrund andere
> Verzeichnisinhalte vortäuscht als tatsächlich auf der
> Platte gespeichert sind, dann wir es echt schlimm.

Liegt in dem Falle daran, dass der User einen Schrott-Dateimanager
verwendet, der nicht völlig kompatibel mit 64-Bit-Windows ist. Es ist also
wie immer: man schimpft und zeigt auf Windows, aber vier Finger zeigen auf
die wahre Ursache zurück: PEBCAK.

> Es
> spricht ja nichts gegen virtuelle Verzeichnisse, aber die
> realen Verzeichnisse sollten immer unter ihren richtigen
> Namen erreichbar sein.

Es spricht nichts dagegen, einen der unzähligen!, zu Windows kompatiblen
Dateimanager zu verwenden, unter den "Commandern" z.B. den 64 Bit Total
Commander... Wer hingegen stur an Schrott festhält, darf später nicht auf
Windows schimpfen, sondern muss sich selbst kräftig am Ohrläppchen drehen.

Arno Welzel

unread,
Feb 9, 2022, 6:36:28 AM2/9/22
to
Takvorian:

> Herbert Kleebauer schrieb:
>
>> On 06.02.2022 21:25, Stefan Kanthak wrote:
>>
>>>> Kennst du eine Stelle, wo das genauer dokumentiert ist?
>>>
>>> <https://msdn.microsoft.com/en-us/library/aa384187.aspx>
>>> <https://msdn.microsoft.com/en-us/library/aa365744.aspx>
>>> <https://msdn.microsoft.com/en-us/library/aa365745.aspx>
>>> <https://msdn.microsoft.com/en-us/library/ms724405.aspx>
>>
>> Ich hätte gern mein DOS 6.22 wieder!!!!
>
> Dass 32-Bit-Programme frech lügen und Syswow64 als System32 anzeigen,

Sie lügen nicht. Aus Sicht einer 32-Bit-Anwendung gibt es den ganzen
64-Bit-Bereich nicht, sondern die bekommen von WINDOWS(!) eine
32-Bit-Umgebung vorgegaukelt. Dafür können die Anwendungen erstmal
nichts. Sie *können* diese Umleitung auch ausschalten, aber das macht
u.U. dann auch andere Probleme.

Genau deshalb sollte man auf einem 64-Bit-Windows auch nur
64-Bit-Anwendungen nutzen, wenn es wichtig ist, dass man *alle*
Verzeichnisse im System damit korrekt sieht.

--
Arno Welzel
https://arnowelzel.de

Arno Welzel

unread,
Feb 9, 2022, 6:38:09 AM2/9/22
to
Herbert Kleebauer:

> On 06.02.2022 20:29, Herbert Kleebauer wrote:
>> On 06.02.2022 19:57, Takvorian wrote:
>
>>> Du versuchst das offensichtlich mit der 32-Bit-Version von cmd.exe, da hat
>>> man dieses Verhalten. Du musst die 64er-cmd.exe nehmen. Damit wird die Datei
>>> angezeigt und ist auch startbar. Auf welchem krummen Weg kommst du zu der
>>> 32er-Version? Es ist doch wohl ein 64er-Windows?
>>
>
> Habe noch ein bisschen experimentiert. Glaube nicht, dass das etwas
> mit einer 32 Bit Version zu tun hat. Wenn ich aus der CMD shell
> mit dem Midnight Commander ein neues CMD Fenster öffne durch:
>
> start %windir%\system32\cmd.exe

Dann ist das 32-Bit!

Wieso glaubst Du, dass Midnight Commander als 32-Bit-Anwendung(!) ein
64-Bit-CMD starten kann?

> dann findet 'dir' in diesem CMD Fenster narrator.exe auch nicht.

Ja - weil das CMD immer noch 32 Bit ist!

Herbert Kleebauer

unread,
Feb 11, 2022, 3:51:51 AM2/11/22
to
On 07.02.2022 12:28, Herbert Kleebauer wrote:

> Hab jetzt eine Version die mit 64 und 32 Bit CMD funktioniert.
> Die Datei spell.txt enthält Wörter die von dem BATCH
> Programm einzeln angezeigt und vorgelesen werden.
>
>
> @echo off
> if [%1]==[] goto :l1

Nur der Vollständigkeit halber, das ist jetzt daraus
geworden (vielleicht weiß der eine oder andere auch
noch nicht, wie einfach man aus einem batch Programm
Sprache ausgeben kann):

@echo off
MODE CON: COLS=50 LINES=10
color f0
cls
echo createobject("sapi.spvoice").speak wsh.arguments(0)>speak.vbs
for /f "delims=" %%i in (spell.txt) do call :sub %%i
del speak.vbs
echo.
goto :eof

:sub
echo.
set /a n=0
:sub1
set /a n=n+1
if %n%==3 echo ---------- %*&goto :eof
cscript //nologo speak.vbs "%*"
set a=
set /p a=
if /i not "%*"=="%a%" goto :sub1


Einen Link auf die batch Datei erstellen und dort eine große,
gut lesbare Schrift einstellen. spell.txt enthält die Wörter,
die vorgelesen und dann richtig eingetippt werden müssen, z.B.

------------spell.txt----------------------------------
Mama
Papa
Oma
Opa
Laura
Helena





0 new messages