Tôi đọc rất nhiều thông tin về việc nhận các chương trình. Không có thuật toán nào làm được những gì tôi muốn. Tôi cần cài đặt các chương trình chính xác như trong bảng điều khiển.C#: Làm cách nào để cài đặt chương trình giống hệt như chương trình và tính năng của bảng điều khiển?
Vì vậy, tôi đã sử dụng:
- WMI
Win32_Product
lớp. Nó chỉ hiển thị các chương trình được cài đặt msi. - Khóa đăng ký.
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
. Một lần nữa, một số chương trình không được hiển thị trong bảng điều khiển, một số chương trình được hiển thị trong bảng điều khiển không có trong nút đăng ký này.
Vậy, có ai trong thế giới này, ai biết thuật toán nào sử dụng bảng điều khiển để hiển thị các chương trình đã cài đặt?
UPD1: vâng, tôi sử dụng 64 bit, tôi biết có một nút khác cho các chương trình được cài đặt 64 bit "HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall" nhưng mã sau liệt kê twLM HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall phần, kỳ lạ ...
var programs = new List();
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach (string subkey_name in key.GetSubKeyNames())
{
using (RegistryKey subkey = key.OpenSubKey(subkey_name))
{
var name = (string)subkey.GetValue("DisplayName");
if(!string.IsNullOrEmpty(name))
{
programs.Add(name);
}
}
}
}
registry_key = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
foreach (string subkey_name in key.GetSubKeyNames())
{
using (RegistryKey subkey = key.OpenSubKey(subkey_name))
{
var name = (string)subkey.GetValue("DisplayName");
if (!string.IsNullOrEmpty(name))
{
programs.Add(name);
}
}
}
}
foreach (var program in programs.OrderBy(x => x))
{
Console.WriteLine(program);
}
'HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall' nên thực hiện. Bạn có thể đưa ra một ví dụ về một chương trình xuất hiện trong Control Panel nhưng không xuất hiện trong khóa reg này? – Jonathan
bạn có đang sử dụng máy 64 bit không? –
tôi cập nhật chủ đề, mã sau đây không hiển thị cho tôi chương trình winrar mà nằm trong nút SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall – MelnikovI