Fehler, der seit 1974 in Windows bestand

Ursprünglicher Autor: Foone Turing
  • Übersetzung
Es ist jetzt das Jahr 2018, und diese Nachricht ist ein Fehler, der seit 1974 besteht. Die Einschränkung, die sogar im neuesten Windows 10 zu finden ist, wurde vor "STAR WARS" veröffentlicht. Der Fehler ist so alt wie Watergate.


Damals wurden Barcodes nur erfunden, nur eine Telefongesellschaft arbeitete in Amerika, Ted Bundy lief immer noch frei und Babe Ruths Hausrekord war in den letzten Tagen.

Als dieser Bug erschien, wurde das Glücksrad noch nicht im Fernsehen gezeigt (russisches Äquivalent: Field of Miracles, 1990 - ca. Lane). Niemand sah die Rocky Horror Horror Show, und Steven Spielberg drehte mehrere Fernsehfilme und einen Vollbildfilm, der im Vertrieb nicht erfolgreich war (der Film „Duel“ erhielt jedoch mehrere Filmpreise - ca. Lane). Laut NBC wurde "Saturday Night Live" nicht gezeigt, und "Edmund Fitzgerald" trug immer noch Eisenerz (ein riesiges Frachtschiff mit Besatzung sank am 9. November 1975 - ca. Lane).

Nachdem dieser Stoßdämpfer „FICHA“ erfunden wurde, hat nur der zweite Teil des Cross-Vaters die Bildschirme.

Warum ist das passiert? Damals, fünf Jahre lang, kam Unix mit einer guten Idee heraus: „Alles ist eine Datei“, was die Tür für viele Möglichkeiten öffnete: Schreiben von Steckdosen, Pipeline, Konsole usw. mit den gleichen Befehlen und Anweisungen.

Die Idee wurde 1974 von Gary Kildall bei CP / M umgesetzt. Es ermöglicht coole Dinge, wie das Kopieren von Daten von einer seriellen Schnittstelle in eine Textdatei oder das Drucken einer Textdatei direkt von der Befehlszeile aus!

In Unix geschieht dies durch spezielle Dateien, die sich in speziellen Ordnern befinden, wie / dev / tty für die Konsole oder / dev / lp0 für den ersten Drucker. Sie können einen endlosen Strom von Nullen aus / dev / zero, zufällige Bytes aus / dev / random usw. erhalten!

Aber hier ist das Problem: CP / M ist für 8-Bit-Computer mit wenig Speicher und ohne Festplatten ausgelegt. Im besten Fall haben Sie ein 8-Zoll-Diskettenlaufwerk. Welche Verzeichnisse? Sie werden sie nicht brauchen. Verwenden Sie einfach verschiedene Festplatten.

Ohne Verzeichnisse können Sie Ihre Dateien jedoch nicht im Verzeichnis / dev / ablegen. Das heißt, sie sind einfach überall. Wenn Sie also die Datei foo.txt drucken müssen, geben Sie einen Befehl ein PIP LST:=FOO.TXT, der die Datei foo.txt in die Datei "LST" (Datei) kopiert, die einen Drucker darstellt. Und es funktioniert überall, weil es keine Verzeichnisse gibt! Es ist einfach

Aber was ist mit Erweiterungen? Hier ist das Problem: Programme fügen ihre Dateierweiterungen gerne hinzu. Wenn das Programm "Dateinamen eingeben, um die Auflistung zu speichern" sagt, ist es möglich, LST für den Druck oder PTP für das Prägen auf Lochstreifen anzugeben (weil dies 1974 ist, erinnern Sie sich?). Das Programm versucht jedoch, .TXT am Ende des Dateinamens zu setzen! LST.TXT - das ist kein Drucker, oder?

Nein Hack funktioniert immer noch. Spezielle Geräte werden an alle Nebenstellen gesendet, so dass CON auch für CON.TXT oder CON.WAT oder CON.BUG für die Tastatur reserviert ist.

Ja. Dies ist ein echter Hacker, aber nur einige kleine Mikrocomputer mit 4 KB RAM benötigen ihn, wen interessiert das schon?

Das CP / M-Betriebssystem hat sich in den späten 70er und frühen 80er Jahren verbreitet. Es war eines der wichtigsten Betriebssysteme für Unternehmen. Sie definierte die Standardschnittstelle, sodass Sie den CP / M-Code auf NorthStar Horizon schreiben und auf Seequa Chameleon ausführen können.

Das Fehlen eines universellen Grafikstandards machte es unmöglich, viele Spiele für ihn zu schreiben (obwohl es Infocom-Releases gibt), weshalb der Standard hauptsächlich im geschäftlichen Umfeld verwendet wurde.

Der Markt war jedoch groß: Natürlich wollte IBM es für ein neues Projekt namens „PC“ abdecken, das sie Anfang der achtziger Jahre durchführten.

IBM beabsichtigte, einen IBM-PC mit mehreren Betriebssystemen zu starten, und erwartete, dass CP / M "Mainstream" werden würde. CP / M für x86 erschien jedoch nur 6 Monate nach dem Launch des IBM-PCs ... und kostete 240 US-Dollar im Vergleich zu 40 US-Dollar für DOS.

So kaufte die große Mehrheit der Benutzer schließlich Microsoft PC-DOS, eine neue Version des Betriebssystems, das ursprünglich von Seattle Computer Products entwickelt wurde. MS kaufte ein Tim Paterson-Projekt und entwickelte es in PC-DOS (das später in MS-DOS umbenannt wurde, wenn Sie sich dessen nicht bewusst sind).

Das System von Tim Paterson hieß QDOS (Quick and Dirty Operating System, „Schnell und Dirty Operating System“). Es wurde schnell geschrieben, da CP / M noch nicht unter x86 veröffentlicht wurde und QDOS versuchte, einige der Einschränkungen von CP / M zu überwinden. Dieses System hat CP / M definitiv auf viele Arten kopiert.

Unter anderem wurde das Konzept der speziellen Dateien und das Fehlen von Verzeichnissen entliehen, weil es eine nützliche Funktion von CP / M war. In QDOS und PC-DOS 1.0 gibt es also auch AUX, PRN, CON, LPT usw.!

Für PC-DOS 2.0, das 1983 für das neue IBM XT veröffentlicht wurde, hat Microsoft PC-DOS erheblich aktualisiert. IBM XT hatte eine Festplatte, daher wurde PC-DOS um Verzeichnisunterstützung erweitert. Natürlich müssen Sie auf einer riesigen 10-MB-Festplatte eine Reihe von Dateien bereinigen!

Aber hier ist das Problem: Benutzer haben diese speziellen Dateien bereits verwendet, seit PC DOS 1.0 zwei Jahre zuvor veröffentlicht wurde. Schriftliche Software mit ihrer Unterstützung! Die Produktion ist Batch-Dateien gegangen.

Mit dem Aufkommen von Verzeichnissen konnte Microsoft jetzt den Ordner C: \ DEV erstellen ... aber nicht.

Nicht zum letzten Mal hat Microsoft den gesunden Menschenverstand für Abwärtskompatibilität geopfert. Spezielle Dateien können jetzt in JEDEM KATALOG und MIT JEDER ERWEITERUNG sein. Also dein TeamDIR > LPTZum Drucken von Auflistungsdateien wird weiterhin in C: \ DOS gearbeitet, wie in A: \.

Natürlich laufen wir nicht mit DOS 2.0 ... Aber Windows 95 wurde auf DOS aufgebaut. Natürlich hat sie dieses Verhalten geerbt (wie früher Windows 1/2/3). Windows 95 ist nicht mehr! Der aktuelle Windows-Zweig basiert auf Windows NT und nicht auf Win95.

Windows NT versuchte jedoch, die Kompatibilität mit DOS- / Windows-Programmen aufrechtzuerhalten, daher kombinierte XP die beiden Zweige. Diese speziellen Dateien funktionieren also immer noch, später vierzig Jahre.

Sie können es selbst ausprobieren! Öffnen Sie den Explorer, erstellen Sie eine neue Textdatei und nennen Sie sie con.txt, aux.txt oder prn.txt.

Entschuldigung, Freund ...



Gary Kildall hat sich eine großartige Idee von Unix entlehnt und sie für Mikrocomputer mit 4 KB Speicher ohne Verzeichnisse angepasst. Es ist so lange her, dass Kinder, die damals geboren wurden, eigene Kinder haben könnten, die das Recht haben, Alkohol zu kaufen, aber wir haben noch kein Namensrecht con.txt -Datei

Microsoft bietet eine vollständige Liste verbotener Namen: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT5, LPT7, LPT8, LPT8 .

Für noch mehr Summen zeigt ein Versuch, unter win95 auf C: \ con \ con (oder C: \ aux \ aux) zuzugreifen, sofort einen blauen Bildschirm. Es hat sogar 1995 Spaß gemacht, denn der Fehler ist 21 Jahre alt! Stellen Sie sich vor, dass ein Fehler so lange bestehen bleibt?





Bonus: Hier ist ein Foto von Tim Paterson auf VCF: W im August dieses Jahres erzählt er über die Geschichte von DOS.



Wenn Sie sich fragen, wie ich eine "verbotene" Datei erhalten habe, die nicht kopiert werden kann, dann werde ich sagen. Diese speziellen Gerätenamen werden auf Betriebssystemebene implementiert, nicht auf Dateisystemebene. Dies sind also vollkommen gültige NTFS-Dateinamen, und ich habe eine NTFS-Platte unter Linux verwendet.

Es scheint, dass OS / 2 diese speziellen Namen auch nicht implementiert hat, da eine der Festplatten von IBM AUX.H-Dateien im OpenGL-Paket enthält.



Heute habe ich versucht, diese NTFS-Diskette auf dem Haupt-PC und dem OP-PA zu sichern. ES IST UNMÖGLICH, ALLE DATEIEN ZU KOPIEREN, WEIL ALS BAGA ALS ALS LESER DIESES ARTIKELS.

Ein paar Anmerkungen:

1. CP / M verwendete diese speziellen Namen nicht so leicht, wie ich es beschrieben habe. Es scheint, dass ich diese Tatsache entweder nicht gewusst oder vergessen habe. In der Tat sollte ihnen ein Doppelpunkt folgen, ähnlich wie die Namen der Platten, also PRN: - Dies ist ein Drucker, PRN - Nein.

2. CP / M hat sie nicht wie auf DOS auf Betriebssystemebene implementiert! Sie wurden einfach in den PIP-Befehl zum Kopieren von Dateien eingefügt. Daher funktionierte der DOS-Spartipp in der PRN.TXT-Datei mit automatischem Drucken dort nicht. Ich meinte nicht, dass CP / M dies tat, sondern nur DOS, aber anscheinend wurde es nicht klar ausgedrückt.

3. In PC DOS 1.0 gab es tatsächlich keine Weiterleitungen oder Pipelines, so dass Sie keine solche Weiterleitung durchführen können, wie ich vorgeschlagen habe. Ich habe es vergessen Sie wurden 1983 zu PC DOS 2.0 hinzugefügt. Obwohl PC DOS 1.0 das Kopieren in / aus speziellen Dateien unterstützte, ist die allgemeine These korrekt, auch wenn das Beispiel nicht erfolgreich ist.

In jedem Fall danke für das Feedback zu diesem Artikel! Ich hatte nicht erwartet, dass es so explodieren würde, ich habe gerade ein paar Absätze besprüht, als ich sehr müde nach Hause kam und eine Fehlermeldung wegen eines 44-jährigen Fehlers sah.

Und wenn, würde ich nicht "Windows SUCKS" schreien. Abwärtskompatibilität ist im Allgemeinen eine gute Sache. In der Tat möchte ich mehr Abwärtskompatibilität, nicht weniger.

Ich war gerade von diesem Fehler aus der Antike beeindruckt, der beim Kopieren von USB 3.0 SSD auf eine andere SSD unter Windows 10 aufgetaucht ist.

Es ist, als würde man auf einer Raumstation leben - und dann erscheint ein Pferd.
tl; dr:


Jetzt auch beliebt: