Amaç ve konumla ilgili en büyük ipucunuz "büyük tip" yani ilgili kovanların isimleridir: HKLM ve HKCU
Dosya ilişkileri her iki kovana da yerleştirilmiş ve iki farklı amacı var:
Adından da anlaşılacağı gibi, HKCU kayıt defteri girdileri, CURRENT USER için dosya ilişkilendirmelerini ayarladı ve HKLM'deki karşılık gelen dosya türü ayarlarını geçersiz kıldı.
HKLM, YEREL MAKİNE için, yani makinenin TÜM KULLANICILARI için (HKCU girişleri tarafından geçersiz kılınmazsa) dosya ilişkilerini ayarlar. (Win98 için HKCR, HKLM \ Software \ Classes için kısa yoldan bir takma addı. Ayrı veya farklı kovanlar değildi. Ancak, bu, Win XP için değişti ve artık doğru değil. HKCR, birleşme sonucu ortaya çıkan sanal bir kovan HKLM \ Software \ Classes \, HKCU \ Software \ Classes \ ve HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts tuşları, HKCU bilgisi öncelikli olarak alınır.)
Bu iki aşamalı sistem sadece bire bir değil, bire bir ve bire çok dosya birliği şemalarını da kolaylaştırıyor. Örneğin, .htm, .html ve .shtml fileto türlerinin tümü ProgID = htmlfile olarak ayarlanabilir ve bu da tek bir tarayıcı tanımlayabilir. OTOH'da, girişler bir dosyayı birden çok tarayıcı, editör veya başka uygulama listesinden açmak için birden fazla girişli OpenWithList veya OpenWithProgID alt anahtarları içerebilir.
Hem HKLM \ Yazılım \ Sınıflar \ hem de HKCU \ Yazılım \ Sınıflar aynı şekilde çalışır (biri diğerinden önceliklidir). En basit biçimde, varsayılan değeri karşılık gelen ProgID (örneğin, txtfile) olan bir dosya uzantısı (örneğin, HKCR.txt) için bir kayıt defteri anahtarı vardır. Varsayılan değere ek olarak veya bunun yerine, "OpenWithProgID" alt anahtarı (örneğin, txtfile ve htmlfile) için listelenen ilave ProgID adları ve / veya "OpenWithList" (örneğin, Notepad ++) altında alt anahtar olarak görünen ek uygulama adları olabilir. .exe, Opera.exe, Firefox.exe).
Her ProgID, HKCR içindeki başka bir anahtarda tanımlanmıştır (örneğin, HKCR \ txtfile). Bu anahtar, hangi simgenin kullanılacağını ve ilgili dosyayı nasıl açacağınızı, yazdıracağınızı, yazdıracağınızı, vb. Benzer şekilde, her uygulama adı HKCR \ Applications altında bir alt anahtar olarak tanımlanır (örneğin, HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ command).
HKCU \ Software \ Classes anahtarına ek olarak, kullanıcı hesabı dosya ilişkilendirmeleri HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts anahtarında bulunur. Bu girişler yalnızca Windows Gezgini için önerildiği gibi değil, aynı zamanda bir kullanıcı hesabı dosya ilişkilendirme geçersiz kılma ek kaynağıdır. Girişler, Explorer'daki dosya ilişkilendirme araçları tarafından yaratılır (Explorer \ Tools \ Folder Options \ File Types) ve listelenen her dosya uzantısı için bir OpenWithList ve / veya bir OpenwithProgID alt anahtarı içerir.
Bir dosya ilişkisini belirlemek için, Windows önce karşılık gelen bir dosya uzantısı için HKCU girişlerine bakar. Sadece bir tane bulunamazsa, HKLM girişleri devreye girer. (Not: Önceliği test etmedim - HKCU \ Software \ Classes veya HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts ama FileExts anahtarının olacağından şüpheleniyorum). Benzer şekilde, başvurulan bir ProgID veya uygulama adı HKCU'da bulunmazsa, HKLM girişleri aranır. (\ Applications \ input'larının sadece rasgele bir ad olduğunu unutmayın - tipik olarak diskteki exe dosya adı ile aynı olsalar bile.)
Bu nedenle, belirli bir kullanıcı hesabı için bir dosya ilişkilendirmesi tanımlamak için HKCU kovanında girişler oluşturun. Tüm kullanıcılar için bir ilişki tanımlamak için, HKLM kovanında (HKCR) girişler oluşturun ve HKCU kovanındaki tüm başvuruları bu dosya türüne göre silin. Açıkçası kayıt defteri anahtarlarına uygun erişim haklarına ihtiyacınız var.
RegEdit'i interaktif veya toplu modda kullanmayı tercih ettiğim gibi assoc ve ftype araçlarını kullanmıyorum, ancak diğer yorumlardan sadece HKLM kovanında çalıştıkları ve HKCU anahtarlarını temizlemek / ayarlamak için yararsız oldukları görülüyor. Biraz zaman ayırın ve daha fazla örnek görmek için yukarıda belirtilen anahtarlara RegEdit ile göz atın.