سؤال

أنا أستخدم حاليًا ShellexeCute "Open" لفتح عنوان URL في متصفح المستخدم ، ولكن أواجه بعض المتاعب في Win7 و Vista لأن البرنامج يمتد كخدمة.

عندما يفتح Shellexecute المتصفح ، يبدو أنه يقرأ ملف تعريف "المسؤول المحلي" بدلاً من المستخدم. على سبيل المثال ، إذا كان لدى المستخدم في لوحة المفاتيح Firefox كمتصفح افتراضي ، فقد يفتح IE (وهو الافتراضي للمشرف).

أعلم أنه يمكن استخدام فعل "Runas" للارتقاء ، ولكن كيف يمكنك القيام بذلك في الاتجاه المعاكس؟ هل هناك طريقة لفتح عنوان URL في المتصفح الافتراضي على سطح مكتب المستخدم القياسي من الخدمة؟

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

المحلول

ستقوم Shellexecute بتنفيذ البرنامج في سياق الجلسة نفسها ونفس المستخدم مثل العملية التي تقوم بتشغيلها.

إذا كنت ترغب في استخدام جلسة مختلفة أو رمز مستخدم يمكنك استخدام CreateProcessasuser Win32 API.

هناك عدة طرق للحصول على رمز مستخدم ، على سبيل المثال ، يمكنك استدعاء API Win32:

نصائح أخرى

بعد فترة من الاختبار ، تكون أفضل طريقة لتحديد المتصفح الافتراضي هي ما يلي:

ملاحظة: إنه أمر غريب ولكنه صحيح ... لا يوجد شيء ليقول أن التطبيق هو التطبيق الافتراضي لبعض نوع الملف أو بروتوكول الويب مثل "HTTP". ما يهم تحديد متصفح الويب الافتراضي هو ما هو مسجل في إدخال قائمة START (انظر مفتاح Reg أدناه). لذا ، ننسى جميع HKCR http و hkcu software classes http و hklm software classes http وأصدقائهم.

  1. اقرأ من "hkey_current_user software clients startMenuinternet"
  2. اقرأ سطر الأوامر من "hkey_local_machine software clients starmenuinternet shell open command"
  3. اقطع سطر الأوامر بعد ".exe"

بالطبع تحتاج إلى انتحال شخصية كمسجّل للمستخدم أولاً.

إذا كان هذا الحل لا يعمل (كما هو الحال مع W2K) ، فاستخدم معالج بروتوكول HTTP.

لبدء تشغيل المتصفح الافتراضي من خدمة ، نستخدم عملية إضافية داخل الخدمة باستخدام السياق المسجّل على المستخدم. تبدأ هذه العملية سطر الأوامر أعلاه (باستخدام Shellexecute على المنصات> = Vista). تأكد من استخدام نفس مستوى النزاهة (المتوسط) كمستخدم افتراضي (لن يعمل أي IE لأنه يستخدم DDE).

HTH.

ممرات هارون لديها مثال على رمز أصلي من سبع خطوات في http://blogs.msdn.com/aaron_margosis/archive/2009/06/06/faq-how-do-i-start-a-program-as-the-desktop-user-from-an-elevated-app. ASPX. لن تساعدك من خدمتك إذا كان هذا هو ما لديك - أوافق على أن خدمتك لا ينبغي أن تحاول تشغيل تطبيق كمستخدم مسجل ، خاصة وأنه قد لا يكون هناك واحد.

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