سؤال

خلفية: لقد قررت أن أدرس نفسي ج # من خلال WPF، وأكتب تطبيقا صغيرا يحتاج إلى الحصول على قائمة باختصارات قائمة البداية وأهدافها وتخزينها. في الأساس، أحاول اتخاذ جميع الاختصارات ووضع مسارات التطبيقات المستهدفة في الذاكرة. ومع ذلك، فقد واجهت مشكلة في محاولة قراءة اختصارات Windows Installer (تلك التي تشير إلى شيء مثل C:\Windows\Installer\{90120000-0030-0000-0000-0000000FF1CE}\wordicon.exe - مايكروسوفت أوفيس هو مثال جيد على هذا). لقد قمت ببعض الأبحاث ويبدو أنه يستخدم Windows بعض السحر وراء الكواليس التي تنطوي على السجل للعثور على الموقع الفعلي للملف.


سؤال: كيف يمكنني الحصول على الهدف الفعلي من اختصارات Windows Installer هذه في C #؟ الكثير من المصادر التي وجدتها وجهت لي إلى IShellLink واجهة، لكنني لا أعرف كيفية استخدامها مع C #. أفضل استخدام مكالمات Windows API (أو، وحتى أفضل، مكتبة .NET) بدلا من النظر يدويا من خلال التسجيل، لكنني سأتأخذ أي إرشادات حول هذه المشكلة.

هل كانت مفيدة؟

المحلول

بعد إجراء المزيد من الأبحاث، وجدت إجابة سهلة هنا. وبعد انها تستخدم أساسا مزيج من MsiGetShortcutTarget و MsiGetComponentPath وظائف msi.dll.

نصائح أخرى

أخشى Ishelllink هو Windows API لاستخدام روابط Shell! API شل هو COM بشكل كبير.

لكن الأخبار الجيدة هي أن COM Interop يعمل بشكل جيد للغاية في .NET. هذا الموقع هو عادة مصدر جيد جدا:

http://www.pinvoke.net/default.aspx/interfaces/ishelllinka.html.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top