2010-06-21 5 views

Répondre

5

Ceci n'est pas supporté par ClickOnce (bien que je ne cesse de le demander).

J'ai récupéré le code suivant il y a longtemps, mais je n'ai jamais eu le temps de l'essayer. Je mettrais un try/catch autour de lui au cas où cela causerait un problème. Laissez-moi savoir si cela fonctionne. ;-)

RegistryKey myUninstallKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall"); 
string[] mySubKeyNames = myUninstallKey.GetSubKeyNames(); 
for (int i = 0; i < mySubKeyNames.Length; i++) 
{ 
    RegistryKey myKey = myUninstallKey.OpenSubKey(mySubKeyNames , true); 
    object myValue = myKey.GetValue("DisplayName"); 
    if (myValue != null && (string)myValue == _ApplicationName) 
    { 
     myKey.SetValue("DisplayIcon", _ExecutablePath + @"\App.ico"); 
     break; 
    } 
} 
+1

Cela nécessiterait évidemment que vous soyez livré avec des autorisations de confiance ou de registre complètes. C'est ce que font la plupart des gens (confiance totale, je veux dire), mais toujours un bon point à retenir si vous vous êtes soucié de courir dans une confiance inférieure. –

+0

Je pense qu'il pourrait fonctionner avec une confiance partielle, car il modifie la partie HKCU du registre, et une application ClickOnce devrait y avoir accès. – RobinDotNet

+0

Où mettriez-vous ce code - dans le code de démarrage de l'application ou dans un exe post-installation (comment)? – Graeme