Jörg Tewes <[EMAIL PROTECTED]> wrote on 28.02.04:

> Freitag, 27.02.04 Michael Heydekamp schrub...

>>> Dir ist ja auch ein interner Befehl des COMMAND.COM

>> Und "start" ist ein Befehl, von dem hier gesagt wurde, daß er genau
>> wie "dir" ein interner Befehl vom COMMAND.COM von Win2K/XP sei.

> Kann ich nicht finden das das jemand gesagt hat.

MID: [EMAIL PROTECTED]

Der Einfachheit zitiere ich mal (Quote etwas komplettiert, damit
erkennbar ist, daß es in der Tat um COMMAND.COM ging, Quote Initials
ergänzt):

----------8<----------
 MH>> Wo ist denn dieses Gerümpel eigentlich mal dokumentiert?  Wenn ich
 MH>> es recht erinnere, unterstützt der COMMAND von Win2K/XP im
 MH>> Unterschied zu dem von Win9x ja schonmal keine LFNs.  Dann kennt
 MH>> er den Befehl "start" nicht

 HJT> Doch durchaus: ein
      ^^^^ ^^^^^^^^
 HJT> system("start /w cmd.exe")

 HJT> funktioniert (system ist hier im Beispiel eine C-Funktion, die den
 HJT> Commandointerpreter zur Ausführung aufruft. Wie die entsprechende Funktion
 HJT> bei BP heisst, entzieht sich meiner Kenntnis).
----------8<----------

Um diese Aussage ging's dabei die ganze Zeit.

> Start ist schion immer nur ein interner Befehl des CMD.EXE gewesen
> weswegen es ja auch keine externe Start.Exe bei W2k/XP gibt.

>> Daran knüpfte dieser Gedankengang inhaltlich an, denn wenn das so
>> wäre, müßte "start" ja eben kein externes Programm sein.

> Start ist auch kein externes Programm,

Grmbl, das weiß ich.  Du mußt wirklich mal den Thread zurücklesen, in
demselben Posting schrieb HJT doch:

----------8<----------
 HJT> Ein *Spawnen* (direkter Aufruf eines Programms, ohne Umweg über
 HJT> einen Befehlsinterpreter) von "start" wird allerdings nicht
 HJT> klappen, da "start" unter W2K/NT/XP kein Programm ist.
----------8<----------

Da wurde das Nicht-Funktionieren beim Aufruf einer Funktionstaste also
damit begründet, daß "start" kein externes Programm sei (trotzdem der
Befehl COMMAND.COM aber bekannt sei).

Worauf ich entgegenhielt, daß dann "dir" auch nicht funktionieren dürfte
(was aber der Fall ist) und daraus schlußfolgerte, daß die Voraussetzung
(COMMAND.COM kennt den Befehl "start") nicht stimmen kann - denn sonst
würde er ja genau wie "dir" funktionieren.

In <[EMAIL PROTECTED]> stand dann
folgerichtig noch:

----------8<----------
 HJT> hier meinst Du vermutlich, daß start nicht funktioniert, wenn
 HJT> start xyz über eine Funktionstaste aus FreeXP heraus aufgerufen
 HJT> wird? Wenn ja, dann stimmt das (start funktioniert nicht). Aber
 HJT> nicht desshalb, weil command.com damit nichts anzufangen wüsste,
 [...]
----------8<----------

Auch hier (noch) die Position, daß das Nicht-Funktionieren *nicht* damit
zusammenhänge, daß COMMAND.COM "start" nicht kenne.

So, ich hoffe, das reicht. :)  Inzwischen ist HJT ja auch wieder etwas
zurückgerudert und es ging mir jetzt auch nicht darum, etwas zu
beweisen, sondern nur nochmal die Zusammenhänge von Aussagen, die durch
verkürzte Quotes inzwischen verlorengegangen waren, zu verdeutlichen,
weil die Dir offenbar auch nicht präsent waren.

>> Worin sich ja wohl alle momentan weitgehend einig sind, ist, daß
>> maximale Verwirrung vorherrscht und gesicherte, systematisch
>> ermittelte Erkenntnisse rar sind.

> Das Problem mit der Verwirrung ist das halt einige ihre
> Eingabeaufforderung mit den Standardparametern aufrufen und da wird
> dann der command.com geladen. Das wollte ich nicht und hab von ANfang
> an nur den NTCMDPROMPT in W2k/XP aktiviert gehabt. In der Beziehung
> bin ich also nicht ganz so verwirrt. :-))

Nein, das meinte ich nicht mit Verwirrung, sondern das Verhalten von
Win2K/XP ist an sich verwirrend und schwer zu durchschauen.  Du wirst ja
mitbekommen haben, daß HJT inzwischen entdeckt hat, daß manche Befehle
nur deswegen funktionieren, weil COMMAND wiederum CMD aufruft.

>> Erstmal bin ich noch nicht sicher, ob das so ist (daß die COMSPEC-
>> Variable irrelevant ist, der Code sagt nämlich was anderes).

> Dann kommt der Aufruf von anderer Stelle im Code.

Aha?  Und wo? ;)

> Wenn ich hier CMD.EXE spezielle Befehle (wie z.B. start) über Shift-
> F1, oder eine beliebige andere Funktionstaste, aufrufe funktionierts
> nicht, schreibe ich CMD.EXE /C davor klappts sofort.

Das beweist aber doch nicht, daß XP sich nicht für COMSPEC interessiert.
Was in dem Moment, wo XP ein externes Programm über eine Funktionstaste
aufruft, vom Betriebssystem als COMSPEC geliefert wird, kannst Du doch
gar nicht sehen.

Du siehst nur das, was nach <F9> COMSPEC ist, aber das muß nicht
identisch sein.

In jedem Fall unterliegt es nicht dem Einfluß von XP.  Um wirklich sehen
zu können, welchen Inhalt COMSPEC hat, müßtest Du das debuggen (oder
eine Debug-Version compilieren, die Dir den Inhalt zur Laufzeit
ausgibt).

>> Das war doch die Aussage, die ich in meinem obigen Satz zur
>> Voraussetzung gemacht habe (siehe die markierte Passage).

> Ja habe ich gelesen, aber entweder hat HJT sich da falsch ausgedrückt
> oder du hast ihn falsch verstanden.

Dann erzähl mal, wie Du das obige verstanden hast.  HJT zumindest hat
sich nicht in der Richtung geäußert, falsch verstanden worden zu sein.

>> Also nochmal in kurz ;):  Wenn sowohl "dir" als auch "start"
>> interne Befehle des COMMAND.COM wären und beide nicht als externe
>> Programme im Pfad existieren, ist es unlogisch, daß "dir" ohne
>> vorangestelltes "CMD /C" funktioniert, "start" aber nicht.

>> Jetzt klarer?

> Ja wenn es so wäre wie du schreibst wäre es unlogisch das "start"
> nicht funktioniert. Aber dem ist nunmal nicht so.

Erzähl das nicht mir, nix anderes sage ich die ganze Zeit.  Die
Feststellung der Unlogik diente nur dazu, diese Position zu stützen.

Xpost & f'up2 c.f.d, bitte ggf. ignorieren, falls Du dort nicht mitlesen
möchtest.


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

Antwort per Email an