Criando extensão de arquivo personalizada com o registro do Windows

4

Ok, eu tenho lido e pesquisado isso há algum tempo e não consigo entender o que está errado. Eu estou tentando criar uma extensão de arquivo .int no meu registro para que eu possa adicionar a chave ShellNew para ele e, portanto, deve permitir-me fazer o simples clique direito > novo > método de arquivo de criação de arquivos. Então eu fui para HKEY_CLASSES_ROOT e criei uma chave chamada .int.
Eu então criei uma chave chamada intfile com um ícone padrão e configurei sua string (Default) para "Localization File". Então, na minha chave .int, eu configurei o intfile (Default) e criei o Content Type que defini como plain / text. Então eu criei uma nova chave chamada ShellNew e nessa chave eu defini FileName para o caminho no WINDOWS / ShellNew onde meu arquivo .int padrão era. No entanto, quando clico com o botão direito do mouse e vou para o novo, ele não mostra o Novo arquivo de localização. Estou perdendo uma entrada do registro em algum lugar? Qualquer ajuda será muito apreciada, não consigo entender por que isso não está funcionando, já que adicionei ShellNew a muitas chaves antes e sempre funcionou perfeitamente. Esta é a minha primeira vez criando uma extensão de arquivo completamente nova, mas eu li outras extensões de arquivo que existem e não consigo ver por que ele não está funcionando. Ty novamente com antecedência.

Editar: esclarecimento do que eu configurei exatamente.

intfile:
     (Default) REG_SZ "Localization File"
intfile>shell>open>command:
     (Default) REG_SZ "C:\Program Files\Notepad++\notepad++.exe"
.int: 
     (Default) REG_SZ "intfile"
     ContentType REG_SZ "plain/text"
     Percieved Type REG_SZ "text"
.int>ShellNew:
     (Default) REG_SZ "null"
     FileName REG_SZ "C:\WINDOWS\ShellNew\New Int.int"
    
por Barrett 11.07.2011 / 03:59

1 resposta

1

Isso porque você não registrou o tipo de arquivo corretamente. Bem, tecnicamente, você não registrou seu "aplicativo" corretamente.

link \

Você registrou .int corretamente. .int diz para chamar intfile . No entanto, intfile é onde você coloca o aplicativo que lida com o arquivo! Então, o Shellex procura o intfile e tudo o que ele encontra é uma string no campo padrão. Então a operação falha.

Como você deseja uma string lá, você precisa fornecer ao Shell um verbo padrão para executar. Sob o comando intfile create shell \ open \. Digite o caminho completo para seu aplicativo, por exemplo, "% ProgramFiles% \ Notepad ++ \ Notepad ++. Exe" "% 1".

FileName é o caminho completo para o arquivo que você deseja fazer uma cópia, então você precisa de "% windir% e não WINDOWS.

Editar Eu não posso acreditar que estou concordando com este método. . .

Mas não conheço nenhuma maneira de adicionar isso sem escrever um programa. . .

edit2:

Ok,aquivamosnós.

Chave.inttemDefault(SZ)=intfileeTipodeContexto(SZ)=plain.text.EmChave.int,vocêteráasubchaveShellnew.Opadrãodeveestarvazio.Façaumanovastringvazia(Reg_SZ)eparaovalorcolocadononomedoarquivo:'C:\windows\ShellNew\NewLocalizationFile'.

Emintfile,torneopadrãoNewLocalizationFile.

Observeafaltadeaspasduplas.Agoraintfileprecisadasseguintessubchaves:shell,façacomquesejaPadrão=open.Emseguida,crieasubchaveopenemshell.

Agora,crieasubchavecommandsobaberto.

Coloqueocaminhocompletodoprogramasobastringcomaspas.ouseja,"c:\Program Files (x86)\Notepad++\notepad++.exe" "%1" . Note que são aspas duplas.

Editar: 3

Então, parece que o OP encontrou um problema desconhecido e o resolveu dessa maneira.

Hrm ok figured it out! You were right mostly, and I was right a little. The problem was I had opened the file once and set the default program to notepad++ in the pop up dialogue. This created a key called int_auto_file. I went through the registry, very time consuming, and deleted all references to the .int extension. After that I rebuilt them and now it works perfectly.

    
por 11.07.2011 / 06:28