Muszę sprawdzić, gdzie program jest zainstalowany według nazwy programu (nazwa pojawia się w Dodaj lub usuń programy). Jaki jest najlepszy sposób na to, żeby działał dobrze dla wszystkich języków.Jak sprawdzić w C#, gdzie program jest zainstalowany
Odpowiedz
Spójrz do rejestru w
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Wystarczy iteracyjne nad wszystkie podklucze i spojrzeć na wartości displayname i InstallLocation. Tutaj znajdziesz informacje, które chcesz i wiele więcej ;-)
Przynajmniej lokalizacja InstallLocation może być dziełem literackim; na przykład lokalizacja InstallLocation, według rejestru, dla Crystal 11 to "C: \ Program Files \ Nazwa twojej firmy \ Nazwa twojego produktu \". W wielu przypadkach nie jest on również ustawiony. –
Można to osiągnąć za pomocą klas WMI. Ale warunkiem jest
- wniosek i musi być uruchomiony
poniżej przykładowy kod to zrobić
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 działało dobrze dla mnie w języku C#. Użyj pinvoke (http://www.pinvoke.net/default.aspx/msi.msigetproductinfo), aby użyć tej funkcji. –
Jeśli chcesz uniknąć używania PInvoke, myślę, że te informacje można uzyskać za pośrednictwem Deployment Tools Foundation (DTF), części WiX. http://robmensching.com/blog/posts/2008/5/16/deployment-tools-foundation-joins-the-wix-toolset – RenniePet
Aby dodać do odpowiedzi Olivera, zawarłem to sprawdzenie w statycznej metodzie.
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. Jak sprawdzić, czy jest zainstalowany program asp.net mvc 3?
- 2. Gdzie jest zainstalowany program MSBuild.exe w systemie Windows, jeśli jest zainstalowany przy użyciu narzędzia BuildTools_Full.exe?
- 3. Sprawdź, czy program jest zainstalowany
- 4. Czy zainstalowany jest Adobe Reader (C#)?
- 5. Jak sprawdzić, czy moduł powershell jest zainstalowany?
- 6. Jak sprawdzić, czy Suhosin jest zainstalowany?
- 7. Jak sprawdzić zainstalowany pakiet w WiX 3.0?
- 8. Jak ustalić, czy zainstalowany jest program wykonawczy VSTO 2010?
- 9. Jak sprawdzić, czy cocoaPods jest zainstalowany w moim mac
- 10. Jak sprawdzić, czy plik node.js jest zainstalowany czy nie
- 11. klient socket.io: jak ustalić, czy program obsługi jest już zainstalowany
- 12. Jak wykryć, czy w języku C++ zainstalowany jest debuger?
- 13. Jak programowo ustalić, czy zainstalowany jest program Visual C++ Runtime 8.0?
- 14. Jak mogę sprawdzić, czy dany pakiet jest już zainstalowany?
- 15. jak sprawdzić, czy jest zainstalowany mangusta (MongoDB) lub nie
- 16. Jak sprawdzić, czy komponent VBA pakietu Office jest zainstalowany?
- 17. Jak sprawdzić, czy jest zainstalowany dodatek .NET 3.5 SP1?
- 18. Sprawdź MSWord jest zainstalowany w systemie
- 19. Używanie C# Jak wykryć, czy Instalator Windows 4.5 jest zainstalowany
- 20. Dowiedz się, gdzie MySQL jest zainstalowany na Mac OS X
- 21. Gdzie jest zainstalowany skrypt pyvenv w Pythonie 3 w systemie Windows?
- 22. Jak mogę sprawdzić, czy program jest uruchomiony z Valgrind?
- 23. Dowiedz się, gdzie jest zainstalowany pakiet Google Cloud SDK.
- 24. Gdzie przechowywać środki na program w C++ na Linux
- 25. Gdzie zmienić "zainstalowany" dla ograniczenia automatycznego układu?
- 26. Jak sprawdzić, czy mój program jest rurami do drugiej (Perl)
- 27. Gdzie jest MSTest V2
- 28. Jak ustalić, czy dostawca VFPOLEDB jest zainstalowany/zarejestrowany?
- 29. Osadzanie powłoki IPython w C/C++ - program
??? Czy możesz sprecyzować swoje pytanie? Czy pytasz, czy program jest oparty na .Net, czy coś innego? – Graviton
Sprawdź rejestr. – RaYell