Как найти и перечислить все приложения / пакеты UWP?

#c# #winapi #uwp #windows-10

#c# #winapi #uwp #windows-10

Вопрос:

Моя цель — найти и запустить приложение UWP по имени (например, Twitter). В настоящее время я использую расширение для рабочего стола с повышенными правами, следуя руководству Стефана Вика.

В моем консольном процессе Win32 с полным доверием я в настоящее время использую PackageManager для поиска и перечисления всех приложений UWP, и он работает на моем компьютере. Однако, когда я отправляю свой завершенный пакет приложений другому пользователю, на его экране ничего не появляется, даже после запуска с повышенными правами.

Вот мой текущий код:

 var PkgMgr = new PackageManager();

var currUserPkgs = PkgMgr.FindPackagesForUser(string.Empty);

foreach (Package pkg in currUserPkgs)
{
        string pkgName = pkg.DisplayName;
        if (pkgName == "")
        {
                continue;
        }

        if (pkgName.Contains(appName) || appName.Contains(pkgName) ||
        percentSimilarity(appName, pkgName) >= 0.50)
        {
                // we found it

                appPkgName = pkg.Id.FamilyName;
                break;
        }
}
 

Почему при этом не отображаются какие-либо пакеты на компьютере другого пользователя? Сообщение об ошибке не вызывается.

Кроме того, есть ли другое решение, которое может найти все пакеты UWP? Спасибо!

Комментарии:

1. Что PkgMgr.FindPackagesForUser(string.Empty) возвращает?

2. @mm8 он фактически извлекает все пакеты на моем компьютере, но когда я отправляю его другому пользователю, он ничего для них не извлекает. Это тоже даже как процесс с повышенным уровнем.