التطبيق لن تتصرف تحت UAC على الرغم من أنه لا يتطلب أي امتيازات

StackOverflow https://stackoverflow.com/questions/260825

  •  06-07-2019
  •  | 
  •  

سؤال

لقد كان لديها مشاكل خطيرة على تطبيق نحن devlop تعمل مع تمكين UAC لفترة طويلة.

تثبيت مرة واحدة (المثبت فشل على الفور تقريبا مع UAC) يبدو أن UAC يمكن أن تحول على عمل التطبيق.ومع ذلك, بعد فترة سوف يتوقف عن العمل مع أخطاء غريبة عن لا يمكن العثور على الملف التي تم إنشاؤها فقط.

مجرد الحصول على هذا التوالي:

XP as admin:          Fine  
XP as limited user:   Fine
Vista no UAC admin:   Fine
Vista no UAC limited: Fine
Vista UAC admin:      FAIL
Vista UAC limited:    FAIL

البرنامج لا يحتوي على امتياز الشيكات في أي مكان.إذا فهمت الوثائق بشكل صحيح ، أي العمل كمستخدم محدود يجب أن تعمل مع UAC.ولكن هذا يثبت أن لا يكون هذا هو الحال.

تحرير:يجب أن أعتذر عن طرح مشكلة أصعب بكثير مما كان عليه في الأصل.لدينا في الواقع العثور على واحد على الأقل علة في مجلد الافتراضية و أعتقد أن هناك أكثر من هناك.عند هذه النقطة فقط معقولة آمل في الحصول على تشغيله هو العثور على استدعاء API التي يمكن تنفيذها كمستخدم محدود تعطيل مجلد الافتراضية على عملية الاستدعاء و أي عملية يولد (بشكل متكرر).السبب في أننا لا يمكن فقط إضافة واضح هو أن البرنامج يدعو إلى طرف ثالث البرمجيات التي أكتاولي يمكن أن تختلف في الجهاز.

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

المحلول 2

بعد كل هذا الوقت لقد وجدت الحل الذي يعمل.

  1. تثبيت في مكان آخر إلى جانب ملفات البرنامج.هذا بدقة وتجنب الملفات الافتراضية التي يبدو أن سبب كل المشاكل.

  2. تعطيل الافتراضية على التطبيق HLKM مفتاح التسجيل.هذا حل واحد المتبقية خلل تنطوي على تحديثات النظام.

المواد المرجعية: http://msdn.microsoft.com/en-us/library/aa965884%28VS.85%29.aspx

نصائح أخرى

وابحث عن الافتراضية من نظام الملفات والتسجيل على ويندوز فيستا. إذا كان يستخدم التطبيق أجزاء معينة من الملفات و / أو التسجيل سوف تجد أن التطبيق الخاص بك "يعمل" - وهذا هو، واجهات برمجة التطبيقات تنجح مع عدم وجود أخطاء - ولكن لا يتم تخزين تلك البيانات حيث تتوقع. على وجه الخصوص، العديد من المناطق التي كانت مشتركة بين عدة مستخدمين على جهاز واحد هي الآن خارج الحدود، والبيانات يذهب فعلا في بعض تخزين غير محددة للمستخدم الحالي. ستجد فقط بعض الوقت في وقت لاحق أن المستخدمين لا فعلا تقاسم نفس البيانات.

وهناك وسيلة لوقف هذه المحاكاة الافتراضية من الحدوث. تقديم ملف البيان للتطبيق الخاص بك لأقول أنه يعرف عن UAC، كما هو موضح هنا ... http://msdn.microsoft.com/en-us/library/bb756929. ASPX .

لا يهم على وجه التحديد ما هو مستوى امتياز تسأل عن في ملف البيان. مجرد وجود تقول أن التطبيق يفهم سوف UAC وOS لا تحاول أن تكون ذكية والمحاكاة الافتراضية الوصول إلى مناطق "مميزة" من نظام الملفات أو التسجيل. سوف تفشل ببساطة المكالمات API إذا لم يكن لديك امتياز الضروري للوصول إلى تلك الأشياء، وأنه سيكون أسهل كثيرا بالنسبة لك التصحيح.

وأين هو تطبيق يحاول إرسال الملف؟ إذا كان محاولة الكتابة إلى أنه تثبيت الموقع ضمن ملفات البرنامج قد تحصل أخطاء غريبة لأنه لا يسمح الكتابة هنا تحت ويندوز فيستا ويتم إنشاء أي الملفات التي تم إنشاؤها هنا فعلا في مجلد ظاهري في أي مكان آخر - على الرغم من أن تطبيق أنها (عادة) تظهر ل يكون حيث يتوقع منهم.

وأنت قد ترغب في محاولة تشغيل التطبيق في وضع التوافق XP.

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