سؤال

أرغب في إعطاء ملف (موجود بالفعل على الكمبيوتر العميل .exe) أذونات لتنفيذها دائمًا مع الأذونات الإدارية.

يرجى ملاحظة أن الملف الذي أريد إعطاء أذونات موجود بالفعل على جهاز Target. وأريد تغيير أذونات هذا الملف من خلال برنامج آخر مكتوب في C# ولديه أذونات إدارية للقيام بكل شيء.

يرجى إخباري بكيفية القيام بذلك أنا أستخدم هذا الرمز

        System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe");
        FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
        fs.AddAccessRule(fsar);
        File.SetAccessControl(@"c:\inam.exe", fs);

سيؤدي هذا الرمز إلى تغيير الأذونات بشكل صحيح ولكن لا يزال عند تنفيذ inam.exe بعد تنفيذ هذا الرمز ، لم تظهر UAC وأيضًا INAM.exe لا تنفيذ العمليات الإدارية.

في الواقع ، لقد نشرت بالفعل طلبًا على أكثر من 10000 عميل ، لذا يريد إصدار تصحيح لحل قضية الحقوق الإدارية.

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

المحلول

بناء ملف واضح (انظر http://www.gregcons.com/kateblog/addingamanifesttoavistaapplication.aspx من بين أماكن أخرى) وقم بتسمية أي شيء. يجب على nanifest تعيين طلب executionlevel إلى quisterMinistrator. كل مجموعة.

إذا كنت تمتلك EXE الآخر ، فيمكنك تضمين البيان عند بنائه. هذا تقريبا تافهة في Visual Studio 2008 وما فوق. راجع علامة تبويب التطبيق وانزل عن الظهور المنسدلة. هناك تعليمات قريبة. أيضًا عندما تستخدم VS 2008 لإضافة بيان إلى مشروعك ، فلن تضطر إلى كتابة كل XML ، فأنت فقط نسخ مستوى التنفيذ المطلوب المناسب من التعليقات التي تم إنشاؤها لك.

نصائح أخرى

التنفيذ مع الامتيازات الإدارية ليس إذن ملف.

عادة ما يتم تكوين هذا عن طريق إضافة ملف واضح (إما إلى موارد Win32 في EXE ، أو كبيان خارجي). يمكن لهذا الملف البيان تحديد ما إذا كان التطبيق يحتاج إلى تشغيل مرتفعة أم لا.

لست متأكدًا تمامًا من المكان الذي يقوم فيه Windows بتبش "تشغيل هذا البرنامج كمسؤول".

يعد استخدام ملف البيان هو أفضل طريقة ، ولكن هناك طريقة بديلة هي تعيين علامة "تشغيل هذا البرنامج كمسؤول" برمجياً (الخيار الذي تجده في علامة التبويب التوافق لخصائص EXE) ، عن طريق تعيين مفتاح تسجيل بسيط. تحتاج إلى إنشاء قيمة سلسلة (reg_sz) ضمن أحد هذه المفاتيح (إذا كنت تريد أن يكون الإعداد لكل مستخدم أو لكل جهاز ، على التوالي):

hkey_current_user software microsoft windows nt currentversion appcompatflags layers

أو

hkey_local_machine software microsoft windows nt currentversion appcompatflags layers

يجب أن يكون اسم القيمة هو المسار الكامل إلى قابلة للتنفيذ (إذا كان المسار يحتوي RUNASADMIN.

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