Você está fazendo errado. Primeiro, alguma leitura em segundo plano no MSDN:
Quando você usa assoc .ext=fileType
, esse fileType é, na verdade, o ProgID . Como o último link acima afirma:
The proper format of a ProgID key name is [Vendor or Application].[Component].[Version], separated by periods and with no spaces, as in Word.Document.6. The Version portion is optional but strongly recommended.
A descrição do tipo de arquivo que você pode adicionar como um valor FriendlyTypeName no registro.
Por exemplo:
[HKEY_CLASSES_ROOT\.txt]
@="txtfile"
"PerceivedType"="text"
"Content Type"="text/plain"
Aqui .txt é obviamente a extensão e o valor (Padrão) é definido como ProgID, ou seja, txtfile .
[HKEY_CLASSES_ROOT\txtfile]
@="Text Document"
"FriendlyTypeName"="Text Document"
Aqui para o ProgID, temos o valor (Padrão) definido para a descrição do tipo de arquivo e o mesmo para FriendlyTypeName . Em geral, o último é usado para exibir recursos de cadeia localizados e deve ser formatado como uma cadeia indireta (um nome de arquivo completo e um valor de recurso precedido pelo símbolo @, por exemplo @%SystemRoot%\system32\notepad.exe,-469
para txtfile ) .
Eu não sei por que assoc
e ftype
permitem que você use espaços nas strings fileType / ProgID, já que isso vai contra as próprias diretrizes da MS. ProgIDs com espaços até funcionam corretamente se criados manualmente no registro (eu acabei de testar), mas significativamente não encontrei um único ProgID criado por qualquer programa que usa espaços. Estranho ainda é como ftype
parece rejeitar espaços enquanto obtém dados (aspas não ajudam), enquanto não tem problemas em aceitá-los enquanto configura a cadeia de comando no primeiro lugar (as citações não são necessárias durante a configuração).
Meu palpite é que alguém esqueceu de informar o ftype
devs dessa discrepância, porque eu não consegui descobrir uma maneira de fazer o comando recuperar a cadeia de comando que ela mesma havia definido anteriormente para um ProgID contendo espaços. Meu conselho? Atenha-se às diretrizes, não use espaços em ProgIDs e salve-se da dor de tentar descobrir as peculiaridades do Windows.