Можно перечислить сторонние приложения, установленные на телефоне, но только с настольного компьютера (т. Е. Не из приложения, работающего на устройстве) и, следовательно, может не соответствовать тому, что вам нужно.
Во-первых, вам нужно добавить ссылку на эту сборку:
c: \ Program Files (x86) \ Common Files \ microsoft shared \ Phone Tools \ CoreCon \ 10.0 \ Bin \ Microsoft.Smartdevice.Connectivity.dll
Затем следующий код подключится к эмулятору (useEmulator = false
для устройства) и запишет идентификаторы продуктов всех приложений, установленных на консоли.
int locale = CultureInfo.CurrentCulture.LCID;
bool useEmulator = true;
var datastoreManager = new DatastoreManager(locale);
var phonePlatform = datastoreManager.GetPlatforms()
.Single(p => p.Name == "Windows Phone 7");
var phoneDevice = phonePlatform.GetDevices()
.First(d => d.IsEmulator() == useEmulator);
phoneDevice.Connect();
var apps = phoneDevice.GetInstalledApplications();
foreach(RemoteApplication app in apps)
{
Console.WriteLine(app.ProductID.ToString());
}
phoneDevice.Disconnect();
Некоторые предостережения:
- Как упоминалось ранее, этот код работает в .NET на рабочем столе, а не на самом телефоне.
- Вам доступен только ProductID, доступ к
Genre
или * 1019.* выдаст NotImplementedException
- Я не включил обработку ошибок
- Насколько мне известно, это официально не поддерживаемый API, и он может измениться.