Re: XPURE/XPML-Abstuerze unter WinXP: CMD.EXE vs. COMMAND.COM!?

2004-03-02 Diskussionsfäden Hans-Juergen Taenzer
Michael Heydekamp ([EMAIL PROTECTED]) wrote

  Aber dabei habe ich etwas ganz anderes gefunden, was im
  Zusammenhang mit dem Aufruf externer Programme unter Windows ganz
  interessant ist (xp1o.pas, XPWinShell):

Die Routine wird nur in xpview.pas benutzt (Aufruf externer Viewer).

Gruss
Hans-Juergen


FreeXP Entwickler-Mailingliste
[EMAIL PROTECTED]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list


Re: XPURE/XPML-Abstuerze unter WinXP: CMD.EXE vs. COMMAND.COM!?

2004-03-01 Diskussionsfäden Michael Heydekamp
Jörg Tewes [EMAIL PROTECTED] wrote on 27.02.04:

 Donnerstag, 26.02.04 Michael Heydekamp schrub...

 Jörg Tewes [EMAIL PROTECTED] wrote on 25.02.04:

 Ich habe gerade mal C/X/S bei FreeXP aktiviert und da wird der
 COMMAND.COM im falschen Verzeichnis gesucht. FreeXP sucht den
 COMMAND.COM in C:\WINNT\System32, XP2 in C:\WINXP\System32.

 Na super, dann haben wir schon mal die offensichtliche Ursache.
 Jetzt müssen wir nur noch herausfinden, wieso in C:\WINNT\System32
 gesucht wird.

 Nächster Schritt: Wirf mal bitte Deine komplette Ausgabe von set
 rüber (am besten die aus CMD *und* COMMAND).

 Kommt

 CMD.EXE

[...]

 COMMAND.COM

[...]

Hmm, nix mit WINNT zu sehen.  Trotzdem mußt Du es ja irgendwie
hinbekommen haben, FreeXP vorzugaukeln, Dein COMMAND.COM befände sich in
C:\WINNT\System32.  Irgendwo in den Eigenschaften einer PIF-Datei
vielleicht (evtl. kopiert von einem früheren System)?  Befehl in 'ner
Batch oder irgendwas in der Richtung?

Jedenfalls habe ich den Code durchforstet, an keiner einzigen Stelle
wird fest verdrahtet auf das Verzeichnis WINNT geprüft.

Aber dabei habe ich etwas ganz anderes gefunden, was im Zusammenhang mit
dem Aufruf externer Programme unter Windows ganz interessant ist
(xp1o.pas, XPWinShell):

--8--
[...]

winnt:=win and (lstr(getenv('OS'))='windows_nt');

[...]

if winnt then
  prog:='cmd /c start cmd /c '+batfile
  else prog:='start command /c '+batfile
end;

[...]
--8--

Aha...???  Da haben wir doch bereits den berühmten Start von CMD.EXE,
der offenbar dann ausgeführt wird, wenn die Umgebungsvariable OS den
Wert Windows_NT hat.  Und siehe da:

 OS=Windows_NT

Das ist bei Dir (und vermutlich allen anderen Win2K/XP-Usern) der Fall.

Wann allerdings die WinXPShell Routine überhaupt benutzt wird, das muß
man sich nochmal genauer ansehen.

Der Code ist BTW genau so auch in XP2 drin (nicht aber in der originalen
3.20 von Peter, wenn ich nix übersehen habe).

 Letzteres ist das Verzeichnis was über %SYSTEMROOT% zu finden ist,
 ersteres ist das Standardverzeichnis unter WinNT und W2k, aber
 nicht bei WinXP. Es scheint das FreeXP hier nicht die Systemroot
 Variable auswertet

 Gerade XP2 wertet die garantiert nicht aus, das weiß gar nix von
 WinNT und Konsorten.

 Stimmt fiel mir kurz nach abschicken auch auf.

Bzgl. %SYSTEMROOT% stimmt das zwar, aber siehe oben.

Xpost  f'up2 c.f.d


Michael

FreeXP Entwickler-Mailingliste
[EMAIL PROTECTED]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list