Ich habe die Zuordnung geändert, die beim Starten einer .py
Datei über den Windows Explorer verwendet werden soll:
- Extras -> Ordner -> Dateitypen.
- Navigieren Sie dann zu
.py
. - Ändern Sie die Zuordnung zu Wordpad.
Wenn ich jetzt den Namen einer PY-Datei in die Befehlszeile eingebe, öffnet Wordpad sie.
Aber assoc
und ftype
in der Kommandozeile gibt es trotzdem noch folgendes zurück:
C:\> assoc .py
.py = Python.File
C:\> ftype Python.File
Python.File = "C:\Program\Python27\python.exe" "%1" %*
Wie kommt es, dass der Verein aktiv ist, man sich dessen aber assoc
nicht ftype
bewusst ist?
Ich habe die Eingabeaufforderung neu gestartet.
Weitere Informationen aus meinem Register:
HKEY_CLASSES_ROOT\.py
= Python.File
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
= wordpad.exe
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids\Python.File
=
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.py\(Standard)
= Python.File
Weitere Registrierung:
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command\(Standard)
= "C:\Program\Python27\python.exe" "%1" %*`
Ich nehme an, dass dies in angezeigt wird ftype Python.File
. Aber es scheint nicht verwendet zu werden.
(Ich mache das zu Testzwecken, damit ich schließlich problemlos meine Standardversion von Python auswählen kann.)
Antwort1
Je nachdem, wie Sie eine Datei aufrufen, hängt es davon ab, welches Verb verwendet wird. Das von Ihnen verwendete Verb bestimmt, was Windows damit macht. Die Standardverben sind Öffnen, Bearbeiten, Drucken, Abspielen und Vorschau. Es ist jedoch möglich,Erstelle deine eigenen VerbenDas am häufigsten hinzugefügte Verb ist dasMit Familie öffnen(einschließlich OpenWithProgIDs), die dieses kleine Kontext-Untermenü unter „Öffnen mit“ hinzufügen, um Ihnen mögliche Alternativen anzubieten. Wenn Sie beispielsweise Paint.NET installieren und dann mit der rechten Maustaste auf eine JPG-Datei klicken, sehen Sie, dass der Eintrag „Öffnen mit“ zu einem Untermenü erweitert wird, das Paint.NET, Paint und den Bildbetrachter auflistet, den Microsoft für Ihre Windows-Version genannt hat.
Darüber hinaus ist das, was Unsigned Code Labs gesagt hat, sehr wichtig. Wenn Sie Klassen debuggen, müssen Sie sich HKLM\Software\Classes\
und ansehen HKCU\Software\Classes
. HKCR
ist sehr nützlich, um das System abzufragen, aber nicht so gut, um herauszufinden, warum es sich falsch verhält.
Ich habe ein paar Tests auf meinem Windows 7-System mit durchgeführt procmon.exe
und die Befehle assoc
und ftype
scheinen zu versuchen, direkt in zu schreiben HKCR
, was das System anscheinend als Schreiben in interpretiert HKLM
. Mein aktuelles Konto ist Mitglied der Administratorgruppe, aber UAC ist aktiviert. Als ich es versuchte, wurde mir der Zugriff verweigert assoc .mytest=MyTest.File
.
Seltsamerweise wird diese Verknüpfung weder in noch in angezeigt , wenn ich eine Verknüpfung erstelle, indem ich mit der rechten Maustaste auf eine Datei mit dem Namen klicke test.mytest
und sie mit Notepad verknüpfe . Die Verknüpfung ist definitiv in und vorhanden . Ich habe jedoch nicht versucht, neu zu starten.assoc
ftype
HKCU
HKCR
Antwort2
ich weiß nicht, wie Sie die Übereinstimmung zwischen der Registrierung und dem, was in ftype und assoc erscheint, herstellen können. Für mich und, wie ich sehe, auch für Sie, sind die Befehle ftype und assoc nutzlos. Was ich tue, um das Standardprogramm für eine bestimmte Erweiterung auf programmatische Weise zu ändern (im Gegensatz zur standardmäßigen und einfacheren Methode mit dem Explorer), ist, diesen Registrierungsschlüssel zu ändern
HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.TheExtensionYouWantToModify\UserChoice\ProgID
Wenn ich zum Beispiel meine MP3s mit MPlayer öffnen möchte, gebe ich ein
HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice\ProgID
der Wert von „mplayerc.mp3“
Was ist dabei kompliziert: Zuerst müssen Sie gültige ProgIDs kennen (verwenden Sie ftype) und zweitens benötigen Sie Schreibzugriff auf diesen Hive. Windows setzt automatisch eine Deny-ACL für den UserChoice-Schlüssel, Sie müssen also einen Weg finden, diese Deny-Regel zu entfernen, um Schreibzugriff zu erhalten. Ich verwende das Programm subinacl, das Sie hier herunterladen können.http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=enum die Berechtigungen zu ändern. Sie können auch das Drittanbieterprogramm SetACL verwenden. Ich empfehle das erste, da die Syntax viel einfacher ist.
Antwort3
Microsoft hat die Funktionsweise ab Windows 8 geändert. Es ist nicht mehr möglich, die Registrierung zu bearbeiten, um dies zu ändern. UmZitat Microsoft:
In Versionen vor Windows 8 konnten Apps den Standardhandler für einen Dateityp/ein Protokoll festlegen, indem sie die Registrierung manipulierten. Das bedeutet, dass Sie problemlos ein Skript oder eine Gruppenrichtlinie verwenden konnten, um die Registrierung zu manipulieren. In Windows 8 werden die Registrierungsänderungen jedoch durch einen Hash (eindeutig pro Benutzer und App) überprüft, der Manipulationen durch Apps erkennt. Wenn kein gültiger Hash vorhanden ist, ignorieren wir den Standard in der Registrierung.
Microsoft erwartet, dass Sie dies nun mithilfe einer XML-Datei ändern, die über die Gruppenrichtlinie implementiert wird. AnweisungenHier.
Glücklicherweise hat Christoph Kolbicz den Hashing-Algorithmus zurückentwickelt und ein Tool namensBenutzernameum die Dateitypzuordnung festzulegen. Leider ist es Closed Source.
Antwort4
Die Verwechslung besteht darin, was verwendet wird, umoffeneine Datei und was wird verwendet, umlaufeneine Datei. Der Registrierungsschlüssel
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
\.py\Application
teilt Windows mit, wie die Datei geöffnet werden soll. Durch Doppelklicken auf die Datei wird die Datei mit dieser Anwendung geöffnet.
Da es sich bei der Datei nicht um eine ausführbare Datei handelt, geht die Befehlszeile davon aus, dass Sie die Datei mit der Standardanwendung öffnen möchten, als hätten Sie darauf doppelgeklickt.
Wenn Sie die Zuordnung wieder auf C:\Program\Python27\python.exe ändern oder den Registrierungsschlüssel so bearbeiten, dass er auf Python verweist, sollte alles wieder in den ursprünglichen Zustand zurückkehren. Windows geht dabei davon aus, dass Sie die Datei mit dem Standardprogramm (python.exe) öffnen möchten, das dann das Programm ausführt.