Devo verificare dove è installato un programma in base al nome del programma (nome visualizzato in Installazione applicazioni). Qual è il modo migliore per farlo funzionare bene per tutte le lingue.Come verificare con C# in cui è installato un programma
risposta
Date un'occhiata nel Registro di sistema a
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Proprio iterare su tutte le sottochiavi e dare un'occhiata nei valori DisplayName e InstallLocation. Qui troverai le informazioni che desideri e molto altro ;-)
Almeno l'InstallLocation può essere un'opera di finzione; ad esempio, InstallLocation, in base al Registro di sistema, per Crystal 11 è "C: \ Programmi \ Nome azienda \ Nome prodotto \". In molti casi, non è nemmeno impostato. –
È possibile ottenere questo utilizzando le classi WMI. Ma il presupposto è
- la candidatura e dovranno essere in esecuzione
sotto il codice di esempio per fare questo
string queryString =
"SELECT Name, ProcessId, Caption, ExecutablePath" +
" FROM Win32_Process";
SelectQuery query = new SelectQuery(queryString);
ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection processes = searcher.Get();
foreach(ManagementObject mObj in processes)
{
var name = mObj ["Name"].ToString();
var ProcessId = Convert.ToInt32(mObj ["ProcessId"]);
var Caption = mObj ["Caption"].ToString();
var Path = mObj ["ExecutablePath"].ToString();
}
MsiGetProductInfo ha funzionato bene per me in C#. Utilizzare pinvoke (http://www.pinvoke.net/default.aspx/msi.msigetproductinfo) per utilizzare la funzione. –
Se si desidera evitare l'uso di PInvoke, penso che queste informazioni possano essere ottenute tramite Deployment Tools Foundation (DTF), una parte di WiX. http://robmensching.com/blog/posts/2008/5/16/deployment-tools-foundation-joins-the-wix-toolset – RenniePet
Per aggiungere alla risposta di Oliver ho concluso questo controllo all'interno di un metodo statico.
public static bool IsProgramInstalled(string programDisplayName) {
Console.WriteLine(string.Format("Checking install status of: {0}", programDisplayName));
foreach (var item in Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall").GetSubKeyNames()) {
object programName = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + item).GetValue("DisplayName");
Console.WriteLine(programName);
if (string.Equals(programName, programDisplayName)) {
Console.WriteLine("Install status: INSTALLED");
return true;
}
}
Console.WriteLine("Install status: NOT INSTALLED");
return false;
}
- 1. Come verificare se un programma è installato su sistema Windows
- 2. Come verificare se è installato un servizio Windows in C#
- 3. controllare se è installato un programma
- 4. Come rimuovere un programma installato con distutils?
- 5. Come verificare se un programma è in esecuzione con il suo nome con Qt (C++)
- 6. Golang: come verificare il numero di processori su cui è in esecuzione un programma Go
- 7. Come verificare se MongoDB è installato correttamente
- 8. Come posso verificare se un MSI particolare è installato?
- 9. Verificare se un controllo ActiveX è installato con Javascript?
- 10. Verificare se patogen è installato in vimrc
- 11. Chef: come faccio a verificare se è installato un servizio?
- 12. Come verificare se è installato un modulo Perl?
- 13. Verificare se IIS è installato o no?
- 14. Come posso verificare se un modulo PowerShell è installato?
- 15. Verificare se CURL è installato localmente?
- 16. Verificare se un client certificat è installato nel browser client
- 17. Come verificare se Git è installato da .bashrc
- 18. Verificare se è installato il server SQL (qualsiasi versione)?
- 19. Come verificare se un file è già aperto in C
- 20. Come verificare se php-fpm è installato e funziona correttamente?
- 21. come verificare se è installato mangusta (MongoDb) o no
- 22. Verificare se un punto è in un rettangolo ruotato (C#)
- 23. Come determinare se un pacchetto è installato in elisp?
- 24. Come creare un semplice programma C++ in cui std :: cout non viene svuotato
- 25. Collegamento di un programma C++ con SpiderMonkey?
- 26. C++ non installato in Cygwin
- 27. Come verificare lo stato di un programma in esecuzione
- 28. Come verificare se un socket è collegato/disconnesso in C#?
- 29. Come verificare se un tipo è una stringa in C#?
??? Puoi specificare la tua domanda più chiara? Stai chiedendo se un programma è basato su .Net, o qualcos'altro? – Graviton
Controllare il registro. – RaYell