PDA

View Full Version : مقاله: تنظیم سطح دسترسی برنامه توسط Application Manifest



AmirHarirbafan
شنبه 30 بهمن 1389, 02:46 صبح
در این پست میخواهم نحوه تنظیم برنامه برای گرفتن سطح دسترسی، جهت اجرای اعمال سیستمی را توسط دات نت، به شما آموزش بدهم.

حتما تا به حال در مورد UAC که مخفف (User Account Control) میباشد، شنیده اید و اگر از ویندوز Vista، Server 2008 یا Seven استفاده کرده باشید به کرات با آن مواجه شده اید.

66554

این سیستم امنیتی، در صورتی که نرم افزارها نیاز به انجام کارهای سیستمی داشته باشند، از کاربر تاییدیه میگیرد، تا مبادا بدون اطلاع وی، برنامه در سیستم خرابکاری نماید.
حال اگر برنامه هایی که ما مینویسیم نیاز به انجام این اعمال(کارهای سیستمی) داشته باشند چه ؟
در صورتی که برنامه این مجوز را نداشته باشد با خطای زیر مواجه خواهید شد.

66555

مگر اینکه برروی فایل اجرایی راست کلیک کنید و Run as administrator را انتخاب کنید
یکی از این اعمال کپی یا ایجاد یک فایل در ریشه ی درایو C میباشد.

در کل برنامه ها دارای سه نوع سطح اجرا میباشند :
1- asInvoker : فقط اجرا کننده. برنامه ها به صورت پیشفرض دارای این سطح دسترسی میباشد، در این سطح دسترسی برنامه فقط قادر به اعمال غیر سیستمی میباشد.
2- highestAvailable : بالاترین سطح دسترسی که کاربرجاری دارد. سطح دسترسی هر کاربر با کاربر دیگر ممکن است متفاوت باشد. این پارامتر مشخص میکند که سطح دسترسی برنامه برابر با حداکثر توانایی کاربرجاری برای انجام کارهای سیستمی میباشد.
3- requireAdministrator : بالاترین سطح دسترسی در سیستم یا همان سطح دسترسی مدیر سیستم. این نوع برنامه ها تمام قابلیت های کاربر مدیر را دارد و محدودیت دسترسی برایش وجود ندارد.

فایل مانیفست (Manifest) چیست ؟
فایل مانیفست یک فایل با فرمت XML است که به سیستم عامل اعلام میکند که برنامه برای اجرا شدن نیاز به چه پیشنیازهایی دارد. یکی از این پیش نیازها تنظیمات UAC میباشد که مشخص میکند، برنامه نیاز به کدام یک از حالت های اجرا، که در بالا ذکر شد، دارد. البته مانیفست چیز جدیدی نیست، در ویندوزXP نیز وجود داشت.
برای اینکه از قابلیت های مانیفست استفاده نمایید، میتوانید در Solution Explorer بر روی پروژه خود راست کلیک نموده و برروی گزینه Add --> New Item کلیک کرده و فایل Application Manifest File را انتخاب کنید. با انتخاب این گزینه فایلی با پسوند manifest. به پروژه شما افزوده خواهد شد. محتویات این فایل، با صرف نظر از توضیحاتش، به این صورت میباشد




<?xml version="1.0" encoding="utf-8"?>
<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">

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

</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
</application>
</compatibility>
</asmv1:assembly>

حال میتوانید یکی از تگ های زیر را در مکانی که مشخص شده است، استفاده نمایید :



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

که هر کدام از تگ ها با توجه به توضیحات بالا، سطح دسترسی مختلفی را برای برنامه به ارمغان می آورد.
در زیر میتوانید نمونه برنامه ی، کار با مانیفست، را دانلود نمایید :
66556

در این برنامه سعی میشود که یک فایل را در درایو C ایجاد نماییم. در صورتی که فایل مانفست وجود نداشت، برنامه خطا میداد، اما حالا به راحتی میتوان این کار را انجام داد.

نکته اینکه: در صورتی که از فایل مانیفست استفاده کنید، برای دیباگ کردن برنامه باید ویژوال استادیو را به صورت Run as administrator اجرا نمایید.
جهت اطلاعات بیشتر میتوانید به لینک زیر مراجعه نمایید.
http://msdn.microsoft.com/en-us/library/bb756929.aspx