In der von Autohotkey geöffneten Konsole kann kein Telnet ausgeführt werden

1

Ich habe den Telnet-Client auf meinem Windows 7 64-Bit-Computer aktiviert. Wenn ich das Startmenü öffne und cmd von dort aus starte, kann ich Telnet ausführen.

Normalerweise verwende ich die Tastenkombination Win-C, die von diesem AutoHotkey-Snippet implementiert wird, um eine Konsole zu öffnen.

#c::Run, C:\WINDOWS\system32\cmd.exe

Aus irgendeinem seltsamen Grund, wenn ich versuche, Telnet in einem Konsolenfenster auszuführen, das auf diese Weise geöffnet wurde, erhalte ich

Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C: \ Users \ Steve \ Documents> telnet 'telnet' wird nicht als interner oder externer Befehl, ausführbares Programm oder Batch-Datei erkannt.

Wird der Pfad in einer beliebigen Konsole ausgeführt, unabhängig davon, wie sie geöffnet wurde, wird dieselbe Ausgabe erstellt.

Kann jemand Aufschluss darüber geben, warum Telnet auf einer Konsole ausgeführt wird, auf der anderen jedoch nicht?

Steve Crane
quelle
1
Holen Sie sich Process Exporer von Sysinternals und untersuchen Sie die Umgebungen beider Prozesse. Prüfen Sie, ob es irgendwo einen Unterschied gibt.
Paradroid
Ich kann sehen, dass sie sich unterscheiden. Ich bin nicht sicher, wie ich das Problem beheben soll, aber es macht jetzt Sinn, warum das Problem auftritt.
Steve Crane
2
Wenn Sie Ihre Frage mit den Unterschieden bearbeiten, die Sie sehen (Daten oder Screenshots), kann Ihnen möglicherweise jemand davon erzählen.
Paradroid

Antworten:

1

Ein Code-Snippet hätte das Posten einer Lösung viel einfacher gemacht!

Ihr Problem ist, dass der Pfadbefehl rulez auch unter Windows noch für DOS gilt.

Sehen Sie sich Ihren Pfad in jeder erwähnten Umgebung und den Speicherort des Telnet-Programms genauer an und prüfen Sie, ob der Befehlsprozessor die ausführbare Datei in jedem Fall findet. Sie sollten in der Lage sein, den vollständigen Pfadnamen des Telnet-Programmnamens in AHK anzugeben, der Ihr Problem lösen sollte.

Alternativ können Sie eine Batch-Datei mit dem Namen telnet.bat in Ihren Dokumentenordner legen, in der das eigentliche Telnet-Programm aufgerufen wird.

Vergessen Sie in keinem Fall, die Eingabeparameter der Befehlszeile an Telnet zu übergeben, dh: /telnet.exe% 0% 1 usw

Passant
quelle
Einige gute Ideen, aber am Ende habe ich nur Telnet von einer virtuellen Linux-Maschine aus verwendet. Selbst wenn ich Telnet unter Windows ausführte, funktionierte es nicht so, wie es das Tutorial, an dem ich arbeitete, vorschrieb. Der Linux hat es getan.
Steve Crane
Sie sind sich nicht sicher, welches Code-Snippet Sie erwartet haben. Dies ist schließlich eine Frage zum Ausführen einer Anwendung und nicht zum Schreiben einer Anwendung.
Steve Crane
1

Es sieht so aus, als ob die Lösung für diese andere Frage direkt auf Ihr Szenario zutrifft: Telnet nicht lauffähig .

Auf einer 32-Bit-Shell wird der 64-Bit-Telnet-Client möglicherweise nicht ausgeführt. Ihr AutoHotkey-Skript führt CMD aus dem System32-Verzeichnis aus.

Versuchen Sie, CMD direkt über das Startmenü auszuführen. Überprüfen Sie, ob dies zu unterschiedlichen Ergebnissen führt. Wenn nicht, versuchen Sie, das WHERE zu verwenden (sowohl in der Shell, in der Telnet funktioniert, als auch in der Shell, in der es nicht funktioniert), und geben Sie den PATH aus beiden Fällen an. Dies vereinfacht die weitere Fehlerbehebung erheblich.

TOOGAM
quelle
1

Lösung für dieses Problem:

Auf einem 64-Bit-Betriebssystem wird telnet.exe aus dem Unterverzeichnis '% windir% \ WinSXS' und nicht aus dem Unterverzeichnis '% windir% \ System32' aufgrund der Standardeinstellungen der Umgebung verwendet.

Um das Problem zu lösen, wählen Sie im AHK-Compiler die 64-Bit-Option aus der Liste aus, um die ausgewählte ausführbare Datei zum Ausführen von telnet.exe aus der kompilierten ausführbaren AHK-Datei zu kompilieren, da telnet.exe in der Jobliste als 64-Bit-Prozessregisterkarte aufgeführt ist . Das Ausführen der 32-Bit-Datei "telnet.exe" aus dem Unterverzeichnis "% windir% \ System32" wird unter einem 64-Bit-Betriebssystem nicht ausgeführt. Die 64-Bit-Datei "telnet.exe" aus "% windir% \ WinSXS" im Kompatibilitätsmodus hängt, wenn sie unter einem 64-Bit-Betriebssystem ausgeführt wird.

wiens wiens
quelle
0

Ich gab es schnell auf, herauszufinden, was dieses Problem verursachte, da ich keine dringende Notwendigkeit hatte, dies zu tun. Ich konnte Telnet ausführen, nur nicht so, wie ich es ursprünglich versucht hatte. Selbst als ich es ausführte, fand ich es in einer virtuellen Linux-Maschine weniger nützlich als Telnet. Ich habe zuletzt viel von Telnet (auf jeden Fall in Windows) unter XP Gebrauch gemacht, und das Telnet unter Windows 7 scheint einen Schritt zurückgegangen zu sein.

Steve Crane
quelle
-1

Aktualisieren:

Sie sollten überprüfen, ob telnet.exe korrekt installiert ist.

Bei einer 64-Bit-Win7-Installation finden Sie sie in einem Verzeichnis, das dem folgenden ähnlich ist:

C: \ Windows \ winsxs \ amd64_microsoft-windows-telnet-client_31bf3856ad364e35_6.1.7600.16385_none_1426830c3ebb712d

Wenn es nicht vorhanden ist, deinstallieren Sie es und installieren Sie es erneut.

Robert
quelle
Vielleicht hast du meine Frage nicht verstanden. Der erste Satz besagt, dass ich den Telnet-Client aktiviert (installiert, wenn Sie so wollen) habe.
Steve Crane
Es tut mir leid, trotz Ihres Kommentars musste ich Ihre Frage dreimal lesen, um das relevante Teil zu finden. Wenn du meinst das installiert sag es bitte.
Robert
Ich stelle mir vor, wenn ich installiert gemeint hätte, hätte ich das Wort verwendet. Aus Interesse habe ich nur nach "Windows 7 Telnet" gegoogelt und die ersten Treffer verwenden install oder enable; man sprach sogar über "wie man Telnet unter Windows 7 benutzt". Da die Dateien bereits auf dem Computer installiert sind, sehe ich, dass das Programm aktiviert und nicht installiert werden muss, hätte aber sicherlich auch kein Problem damit, sie zu verstehen.
Steve Crane