احصل على مسارات لجميع التطبيقات في السجل
-
24-09-2019 - |
سؤال
string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(registryKey))
{
(from a in key.GetSubKeyNames()
let r = key.OpenSubKey(a)
select new
{
Application = r.GetValue("DisplayName")
}).ToList().FindAll(c => c.Application != null).ForEach(c => Debug.WriteLine(c.Application));
يعرض هذا المقتطف جميع أسماء التطبيق في السجل. أحتاج إلى مسارات إلى ملفات exe التي تنفذ التطبيق وأحتاج إلى معرفة كيفية تشغيلها باستخدام Process.start () ؛
المحلول
لا يوجد حقًا مصدر نهائي لهذا في أي مكان في Windows. الأقرب الذي ستحصل عليه هو تعداد قائمة START. عرض هذا المنشور لكيفية القيام بذلك:الوصول برمجيا جميع المستخدمين بدء القائمة
في الأساس ، تحتاج إلى استدعاء API ShgetSpecialderderPath لاسترداد موقع قائمة START ثم تعداد جميع الاختصارات في هذا المسار.
يتحدث هذا السؤال Stackoverflow عن كيفية استخراج الرمز من اختصار ؛ يمكنك استخدام نفس الطريقة لاستخراج مسار العمل والقابل للتنفيذ الذي ستحتاج إلى تشغيل التطبيق:استخراج أيقونة من ملف Windows .lnk (الاختصار)
لا تنتمي إلى StackOverflow