2010-07-28 28 views
5

Bir dosya ilişkilendirmesini düzgün bir şekilde oluşturmak için Windows kayıt defterine hangi verileri ve nereye eklemeliyim?Windows Kayıt Defteri'ne dosya ilişkilendirmeleri nasıl düzgün eklenir?

Bu soruyu öncelikle, yıllar önce yazdığım bazı eski uygulamalar nedeniyle Visual Studio .NET'in Windows Installer paketleyicisini dosya ilişkilendirmelerini oluşturmak için kullandım. Yüklediğim uzantılar .whr ve .encxml idi.

Şimdi bu uygulamalar yüklü olduğu bilgisayardaki garip bir sorun bazen oluşur - bir dosya Google Chrome veya (özellikle bir exe, msi veya zip dosyası) Internet Explorer birinde indirildiğinde, tarayıcı olacak dosya uzantısını yükleyicim tarafından yüklenen uzantılardan birine değiştirin. Diğer tarayıcıları etkileyip etkilemediğini bilmiyorum - bu ikiside ortak bir şey var mı? Yani, örneğin, http://example.com/downloads/application.exe'u indirirseniz, dosya, herhangi bir nedenden ötürü http://example.com.downloads/application.encxml (ya da .whr, o an için seçtikleri) olarak indirilecektir.

HKCR\.whr ve HCKR\.encxml anahtarlarının başvurduğu anahtarların (Hesap Yöneticisi Şifreli XML Dosyası ve Çalışma Saatleri Kaydı) boşluk bıraktığını ve Visual Studio'da ilişkilendirmeyi oluşturduğumda, bir "NOT" eklemediğimi belirtmeliyim. " öne. Belki de boşluklara izin verilmez ve/veya "." Ile önekini almanız gerekir. Kayıt defteri kodu Tamam görünüyor, ama benim kayıt defterine bakarak her diğer uygulama dernek sınıfında bir boşluk kullanmaz, ne de bilmiyorum herhangi bir makinede herhangi bir uygulama yüklü herhangi bir başka dosya uzantısı ile bu sorun olur Uygulamalarımın VS yükleyicileri tarafından oluşturulanlar. Ilgili kayıt defteri anahtarları ve dosya uzantıları ile ilgili değerlerin bir kayıt defteri döktüm - MSI tescilli olduğundan, bunun tüm olup olmadığını hiçbir fikrim yok, ama diğer uygulamalardan bildiklerimden bu her şey olmalıdır. Yıllardır hep bu konuyu merak ettim, ama asla anlayamadım. Bu eski uygulamalardan birini yakında yeni bir ürünle değiştiriyorum, bu yüzden bu sefer garip bir hata olmadığından emin olmak istiyorum ...

İşte veriler (metin değerleri değerinin altında bir // yorum ile bazı ikili dizeleri):

[HKEY_CLASSES_ROOT\.encxml] 
"Content Type"="application/octet-stream" 
@="Account Manager Encrypted XML File" 

[HKEY_CLASSES_ROOT\.encxml\Account Manager Encrypted XML File] 

[HKEY_CLASSES_ROOT\.encxml\Account Manager Encrypted XML File\ShellNew] 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File] 
@="Account Manager Encrypted XML File" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\DefaultIcon] 
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,\ 
    00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,49,00,6e,00,73,00,74,00,\ 
    61,00,6c,00,6c,00,65,00,72,00,5c,00,7b,00,42,00,36,00,34,00,31,00,37,00,36,\ 
    00,30,00,42,00,2d,00,37,00,44,00,42,00,37,00,2d,00,34,00,46,00,31,00,42,00,\ 
    2d,00,41,00,44,00,36,00,45,00,2d,00,30,00,41,00,33,00,34,00,32,00,30,00,46,\ 
    00,35,00,45,00,45,00,30,00,44,00,7d,00,5c,00,5f,00,36,00,46,00,45,00,46,00,\ 
    46,00,39,00,42,00,36,00,38,00,32,00,31,00,38,00,34,00,31,00,37,00,46,00,39,\ 
    00,38,00,46,00,35,00,34,00,39,00,2e,00,65,00,78,00,65,00,2c,00,30,00,00,00 

// Product code GUID is: {F7F214E9-ED37-4AE1-B0D2-93427973E60A}, which is different from below but I probably changed it at some point for some reason 
// %APPDATA%\Microsoft\Installer\{B641760B-7DB7-4F1B-AD6E-0A3420F5EE0D}\_6FEFF9B68218417F98F549.exe,0 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell] 
@="open" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell\open] 
@="&Open" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell\open\command] 
@="\"C:\\Program Files\\Petroules Enterprises\\Account Manager\\AccountManager.exe\" \"%1\"" 
"command"=hex(7):4c,00,29,00,25,00,59,00,63,00,73,00,67,00,2d,00,4c,00,41,00,\ 
    28,00,30,00,64,00,66,00,34,00,36,00,75,00,5f,00,50,00,27,00,3e,00,27,00,7d,\ 
    00,27,00,66,00,25,00,6f,00,59,00,64,00,4b,00,69,00,48,00,74,00,7a,00,35,00,\ 
    21,00,55,00,2b,00,6c,00,68,00,54,00,20,00,22,00,25,00,31,00,22,00,00,00,00,\ 
    00 

// This is a bizarre-looking value... what's up with that? 
// L)%Ycsg-LA(0df46u_P'>'}'f%oYdKiHtz5!U+lhT "%1" 

[HKEY_CLASSES_ROOT\.whr] 
"Content Type"="application/octet-stream" 
@="Work Hours Record" 

[HKEY_CLASSES_ROOT\.whr\Work Hours Record] 

[HKEY_CLASSES_ROOT\.whr\Work Hours Record\ShellNew] 

Windows Yükleyici 'de
[HKEY_CLASSES_ROOT\Work Hours Record] 
@="Work Hours Record" 

[HKEY_CLASSES_ROOT\Work Hours Record\DefaultIcon] 
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,\ 
    00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,49,00,6e,00,73,00,74,00,\ 
    61,00,6c,00,6c,00,65,00,72,00,5c,00,7b,00,46,00,41,00,32,00,33,00,44,00,37,\ 
    00,36,00,34,00,2d,00,46,00,36,00,34,00,39,00,2d,00,34,00,38,00,46,00,39,00,\ 
    2d,00,38,00,44,00,30,00,42,00,2d,00,45,00,31,00,38,00,38,00,35,00,41,00,39,\ 
    00,38,00,31,00,46,00,39,00,39,00,7d,00,5c,00,5f,00,36,00,46,00,45,00,46,00,\ 
    46,00,39,00,42,00,36,00,38,00,32,00,31,00,38,00,34,00,31,00,37,00,46,00,39,\ 
    00,38,00,46,00,35,00,34,00,39,00,2e,00,65,00,78,00,65,00,2c,00,30,00,00,00 

// Product code GUID: {FA23D764-F649-48F9-8D0B-E1885A981F99}, same as below 
// %APPDATA%\Microsoft\Installer\{FA23D764-F649-48F9-8D0B-E1885A981F99}\_6FEFF9B68218417F98F549.exe,0 

[HKEY_CLASSES_ROOT\Work Hours Record\shell] 

[HKEY_CLASSES_ROOT\Work Hours Record\shell\open] 
@="&Open" 

[HKEY_CLASSES_ROOT\Work Hours Record\shell\open\command] 
@="\"C:\\Program Files\\Petroules Enterprises\\Work Hours Calculator\\WorkHoursCalculator.exe\" \"%1\"" 
"command"=hex(7):28,00,5d,00,56,00,49,00,79,00,55,00,7b,00,5e,00,4e,00,3f,00,\ 
    26,00,68,00,48,00,7e,00,53,00,24,00,6e,00,31,00,36,00,59,00,3e,00,33,00,75,\ 
    00,5f,00,7d,00,47,00,26,00,70,00,79,00,75,00,78,00,38,00,4e,00,72,00,43,00,\ 
    6e,00,67,00,27,00,44,00,67,00,42,00,20,00,22,00,25,00,31,00,22,00,00,00,00,\ 
    00 

// Same bizarre-looking type of value as before, but different... 
// (]VIyU{^N?&hH~S$n16Y>3u_}G&pyux8NrCng'DgB "%1" 
+0

Bkz: http://stackoverflow.com/questions/69761/how-to bunu başarıyla gerçekleştirmiş bazı kod projeleri için -sürekli-yürütülebilir-in-the-dosya-uzantısı-ile-c. C# kodunda olmasanız bile, nasıl yaptıklarını anlamak için kodu okuyabilirsiniz. –

+0

Üzgünüm Robert ama bu yanlış. Windows Installer, zorunlu olmayan bir programlama modelidir. Bir C# örneğine bakmak ve onu taklit etmek MSI dünyasında çok hızlı bir süreç antipattern olarak düşünülebilir. –

cevap

İlgili konular