سؤال

حاولت القيام ببعض الأشياء Win32 في C# 3.5 للحصول على حقوق مستخدم مرتفعة لتطبيق وحدة التحكم. أقوم بتطوير في Visual Studio 2008 SP1/GDR والأشياء تعمل بشكل جيد عند التشغيل تحت تصحيح الأخطاء. تعمل الأشياء أيضًا بشكل جيد عندما أقوم بتشغيل تطبيق وحدة التحكم المستقلة. تعمل الأشياء أيضًا بشكل جيد عندما أقوم بتعبئة كل شيء في MSI وقم بتثبيته على خادم 2003 وقم بتشغيل تطبيق وحدة التحكم.

إذا أخذت نفس MSI وقمت بتثبيته على خادم 2008 مع تمكين UAC ، ثم قم بتشغيل تطبيق وحدة التحكم ، أحصل على رسائل مثل هذه:

Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException    Attempted to perform an unauthorized operation.

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

شكرًا.

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

المحلول

ربما تستخدم "البادئة العالمية " إلى اسم الكائن في التطبيق الخاص بك وسيتم تشغيل التطبيق الخاص بك داخل جلسة خادم مضيف جلسة سطح المكتب عن بُعد (مضيف جلسة RD). في حالة تمكين برنامجك se_create_global_name (SeCreateGlobalPrivilege) شرف. نرى C# - كيفية تمكين sedebugprivilege؟ (لكن الاستخدام SE_CREATE_GLOBAL_NAME بدلاً من SE_DEBUG_NAME) أو التلاعب بالامتيازات في الكود المدارة بشكل موثوق وأمان وكفاءة كمثال.

نصائح أخرى

أفترض أن UAC تم تمكينه على جهاز 2008 ولا يمكنني التعليق بعد على سؤالك لمعرفة ذلك.

إذا كان الأمر كذلك ، تأكد من أنه في ملف app.manifest في VS (ضمن الخصائص) ، قم بتغيير

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

إلى

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

حتى إذا كان الكود يعمل كمسؤول ، فيجب عليك الحصول على تحذير UAC.

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