تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
UAC Security
#3
رفع صلاحيات البرامج

يمكن للمستخدم رفع المستوى الذي يتم تنفيذ التطبيق ضمنه بواسطة اختيار الأمر Run As Administrator من القائمة التي تظهر لك عند الضغط بزر الفأرة اليميني على الملف التنفيذي للتطبيق فيقوم النظام بإظهار صندوق حوار UAC الخاص وبعد أن يقوم المستخدم بإدخال كلمة سر المدير يتم تنفيذ البرنامج باستخدام الصلاحيات المرتفعة وهذه الطريقة بسيطة ولا تتطلب تدخلا منك كمبرمج ولكنها تتطلب من المستخدم القيام بخطوة إضافية ولهذا قد لا تكون هذه الفكرة هي الحل الأفضل دوما.
ويمكننا جعل تطبيقنا يبدأ تطبيق معين باستخدام صلاحيات مرتفعة بطريقة تشابه تلك الطريقة التي يستخدمها المستخدم فهو يبدأ تشغيل التطبيق طالبا من النظام تشغيله بصلاحيات مدير حيث يمكن استخدام كود شبيه بالتالي لتشغيل تطبيق آخر بصلاحيات مرتفعة مع أن ذلك التطبيق بذاته لا يطلب تلك الصلاحيات عند بدء تشغيله

كود :
Try
‘ Use the runas verb to start the process.
Dim psi As New ProcessStartInfo
psi.Verb = “runas”
psi.UseShellExecute = True
psi.FileName = txtProgram.Text
psi.Arguments = txtArguments.Text
Dim pro As System.Diagnostics.Process
pro = System.Diagnostics.Process.Start(psi)
‘ Wait for the process to exit.
pro.WaitForExit()
‘ Display the process’s exit code.
MessageBox.Show(“Exit code: “ & pro.ExitCode)
Catch ex As System.ComponentModel.Win32Exception
‘ This happens if the user fails to elevate to Administrator.
MessageBox.Show(“Operation canceled”, _
“Canceled”, MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End Try
حيث يبني الكود السابق الغرض ProcessStartInfo واصفا التطبيق الذي سيشغله الكود حيث يقوم بضبط الخاصية Verb إلى القيمة runas لكي يبين للنظام أن التطبيق يجب أن يتم تشغيله كمدير كما يضبط اسم البرنامج ومحددات بدء التشغيل الخاصة به.
وإن كنت تعلم أن التطبيق يجب أن يتم تشغيله دوما باستخدام صلاحيات مرتفعة يمكنك جعل ذلك التطبيق يطلب رفع صلاحياته بنفسه وذلك باستخدام manifest مضمنة داخل الملف التنفيذي للتطبيق ولإنشائها انقر نقرا مزدوجا على My Project في Solution Explorer وفي صفحة Application انقر على الزر View UAC Settings الذي يقوم بفتح الملف app.manifest حيث يظهر الكود التالي المحتويات الابتدائية لذلك الملف

كود :
[color=#000000][COLOR=#0000bb]<?xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][COLOR=#0000bb]?>
[/COLOR]<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the  
            requestedExecutionLevel node with one of the following.

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

            If you want to utilize File and Registry Virtualization for backward  
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>[/COLOR]

ولجعل التطبيق يطلب من UAC رفع صلاحياته غير قيمة السطر requestExecutionLevel إلى requireAdministrator والآن عندما تقوم بعمل Compile للتطبيق يقوم فيجول ستوديو بتعليم التطبيق بأنه بحاجة إلى صلاحيات مدير فعندما يقوم المستخدم أو أي برنامج آخر بتشغيله سيحاول النظام بصورة آلية رفع صلاحياته مظهرا صندوق الحوار الخاص بـ UAC للمستخدم طالبا منه الموافقة على رفع تلك الصلاحيات
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
UAC Security - بواسطة Raggi Tech - 08-10-12, 11:58 AM
UAC Security - بواسطة Raggi Tech - 08-10-12, 11:59 AM
UAC Security - بواسطة Raggi Tech - 08-10-12, 11:59 AM
UAC Security - بواسطة Raggi Tech - 08-10-12, 12:00 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم