2009-11-12 9 views
8

Desidero registrare la mia estensione di progetto nel registro delle finestre. Ho cercato su google, almeno ho trovato questo codice, questo funziona bene, ma non capisco una riga. Che cosa significa "% L".Registrare l'estensione del file nel registro delle finestre?

Il codice C# è

string ext = ".ext"; 
     RegistryKey key = Registry.ClassesRoot.CreateSubKey(ext); 
     MessageBox.Show(exePath); 
     key.SetValue("", "My Project"); 
     key.Close(); 

     key = Registry.ClassesRoot.CreateSubKey(ext + "\\Shell\\Open\\command"); 
     //key = key.CreateSubKey("command"); 

     key.SetValue("", "\"" + Application.ExecutablePath + "\" \"%L\""); 
     key.Close(); 

     key = Registry.ClassesRoot.CreateSubKey(ext + "\\DefaultIcon"); 
     key.SetValue("", Application.StartupPath + "\\icon.ico"); 
     key.Close(); 

che è la linea che mi confondono,

key.SetValue("", "\"" + Application.ExecutablePath + "\" \"%L\""); 

Si prega di spiegare, sono molto grato a voi in anticipo.

risposta

4

Se l'applicazione eseguibile è in C: \ tua dir \ vostra program.exe la linea è tradotto in:

"C: \ tua dir \ vostra program.exe" "% L"

% L è tradotto nel file che stai aprendo, quindi il tuo programma sta eseguendo quel file come primo parametro

+0

significa che% L è il tipo di parametro che prende il mio file di apertura. – qulzam

+0

puoi conoscere qualsiasi fonte online che mi dia una brevissima descrizione del registro di Windows. ?? – qulzam

+0

esattamente, che è una parola chiave speciale che viene infine convertita nel file di apertura – rossoft

1

Per capire il% L è necessario capire quale programma eseguirà la lettura da il registro.

In questo caso, i verbi specificati in `HKCR.ext \ shell * 'vengono letti ed elaborati da explorer.exe all'avvio dei programmi associati alle estensioni.

Non sembra esserci un elenco definitivo di ciò che Explorer cerca quando si crea una riga di comando. Tuttavia,% L dice a explorer che il programma il suo avvio accetterà la forma lunga del nome file sulla riga di comando. e i nomi di file lunghi possono contenere spazi.

È per questo che i programmi che richiedono nomi di file lunghi sulla riga di comando devono essere in grado di gestire gli spazi: explorer lo fa utilizzando "," come separatore della riga di comando o consentendo il nome file nella riga di comando. racchiuso tra virgolette.

0

%L è il "long name" del file la cui associazione ha richiamato il programma. Nei sistemi operativi moderni è identico a %1 (short name).