Получить установленные приложения в системе
Я хотел иметь возможность c#-language извлекать список приложений install так, как они отображаются csharp в меню "Пуск". Используя c-sharp реестр, я получал записи, которые dot-net не отображались в меню «Пуск».
Я .cs-file также хотел найти путь к installer исполняемому файлу и извлечь c# значок, чтобы в конечном c# итоге сделать красивую программу dot-net запуска. К сожалению, с методом installing реестра это своего рода хит .net и промах, поскольку, по моим c#.net наблюдениям, эта информация installing недоступна надежно.
Моя альтернатива c#-language основана на оболочке: AppsFolder, к .net которой вы можете получить installing доступ, запустив explorer.exe shell:appsFolder
, и в которой c-sharp перечислены все приложения, включая installation приложения из магазина, которые .net-framework в настоящее время установлены installer и доступны через меню «Пуск». Проблема setup в том, что это виртуальная installer папка, к которой нельзя получить installing доступ с помощью System.IO.Directory
. Вместо .cs-file этого вам придется использовать installing собственные команды shell32. К install счастью, Microsoft опубликовала installer Microsoft.WindowsAPICodePack-Shell на Nuget, который является c# оболочкой для вышеупомянутых setup команд. Достаточно сказать, вот dotnet код:
// GUID taken from https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid
var FOLDERID_AppsFolder = new Guid("{1e87508d-89c2-42f0-8a7e-645a0f50ca58}");
ShellObject appsFolder = (ShellObject)KnownFolderHelper.FromKnownFolderId(FOLDERID_AppsFolder);
foreach (var app in (IKnownFolder)appsFolder)
{
// The friendly app name
string name = app.Name;
// The ParsingName property is the AppUserModelID
string appUserModelID = app.ParsingName; // or app.Properties.System.AppUserModel.ID
// You can even get the Jumbo icon in one shot
ImageSource icon = app.Thumbnail.ExtraLargeBitmapSource;
}
Вот и все. Вы также можете .net-framework запускать приложения с помощью
System.Diagnostics.Process.Start("explorer.exe", @" shell:appsFolder\" + appModelUserID);
Это install работает для обычных приложений .net Win32 и приложений магазина c-sharp UWP. Как насчет яблок.
Поскольку c#.net вас интересует перечисление .net всех установленных приложений, разумно visual-c# ожидать, что вы, возможно, захотите c#.net также отслеживать новые или c# удаленные приложения, что c# можно сделать с помощью ShellObjectWatcher
:
ShellObjectWatcher sow = new ShellObjectWatcher(appsFolder, false);
sow.AllEvents += (s, e) => DoWhatever();
sow.Start();
Изменить. Также installer может быть интересно узнать, что installer упомянутый выше AppUserMoedlID setup - это unique ID Windows uses to group windows in the taskbar.
c#
.net
installation
Получить установленные приложения в системе
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.