PDA

View Full Version : سوال: اجرای برنامه به صورت Run As Administrator



Slytherin
پنج شنبه 19 اردیبهشت 1392, 18:44 عصر
سلام و عرض خسته نباشید به همگی دوستان.
من یک برنامه با ویژوال بیسیک نوشتم. این برنامه به یک بانک اکسس در ارتباط هست و در هنگام کار با برنامه یک فایل از نوع html در محل نصب برنامه (Program Files) ایجاد می کند.
این برنامه به طور کامل و صحیح در ویندوز XP و 7 کار می کنه ولی در ویندوز 8 این فایل html ساخته نمیشه.
دلیل این مسئله مشکل مجوزها در ویندوز 8 هست. زمانی که من برنامه رو Run As Administrator اجرا می کنم فایل به طور کامل و صحیح ساخته میشه.
حالا سؤال من اینه که چطوری میشه کاری کرد که برنامه به طور پیش فرض Run As Administrator اجرا بشه؟
اصلا همچین کاری امکان دارد؟ اگر همچین چیزی امکان ندارد پس یه برنامه چطوری میتونه با فایل ها کار کنه؟
ممنون میشم اگر اساتید و مهندس های گرامی راهنمایی کنند.

Slytherin
جمعه 20 اردیبهشت 1392, 17:45 عصر
دوستان من همچنان منتظرم. چند روز دیگه باید پروژ] رو تحویل بدم و تازه به این نکته پی بردم....
نمیشه که بگم ران از ادمین اجرا کنید!
ممکنه توی فروم های سی شارپ یا... بهتر جواب بگیرم؟

SHD.NET
جمعه 20 اردیبهشت 1392, 18:48 عصر
سلام
گه کاربر مورد نظر که لاگین کرده Administrator باشه که هر برنامه ای که اجرا کنید بصورت پیشفرض دسترسی Administrator رو داره و اون گزینه
رو انتخاب کنید یا نکنید فرقی نداره. اگر هم کاربری که لاگین کرده Administrator نباشه که بعد از انتخاب کردن اون گزینه باید با رمز Administrator لاگین بشه که یک روال خودکار نیست.
به هر حال می توانید به سیستم اعلام کنید که این برنامه بدون دسترسی در سطح Administrator قابل اجرا نیست، در منوی Project ویژوال استدیو گزینه ...Project name} Properties} را
انتخاب کنید. در زبانه Application یک دکمه View UAC Settings یا View Windows Settings هست. رویش کلیک کنید. یک تگ requestedExecutionLevel دارد (با اون چند نمونه تگ های
comment ای که معمولا سبز رنگ اند اشتباه نگیرید، آنها سطر های غیر فعال اند)
تگ مورد نظر این شکلی است :

<requestedExecutionLevel level="asInvoker" uiAccess="false" />
مشابه همان مثالی که در خود فایل هست اینطوری تغییرش دهید :

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
اینطوری اگه UAC ویندوز فعال باشه پیغام درخواست دسترسی میده.

اما اگر UAC غیر فعال باشه دیگه ویندوز نظارت نمی کنه، خود برنامه تون باید چک کنه که آیا دسترسی مورد نظر رو داره یا خیر :
Dim principal As New System.Security.Principal.WindowsPrincipal( _
System.Security.Principal.WindowsIdentity.GetCurre nt())
If principal.IsInRole(Security.Principal.WindowsBuilt InRole.Administrator) = False Then
MessageBox.Show("This application requires administrative access." _
, "Insufficient permissions", MessageBoxButtons.OK, MessageBoxIcon.Error)
Application.Exit()
End If

منبع: http://forum.majidonline.com/

SHD.NET
جمعه 20 اردیبهشت 1392, 18:51 عصر
این رو هم الان توی یه سایت دیدم، گفتم شاید کارتون رو راه بندازه:

برای این کار یک مورد از Application Manifest File رو به پروژه اضافه کنید
داخل کد فایل که به صورت XML هست خط زیر رو

<requestedexecutionlevel level="asInvoker" uiaccess="false">
</requestedexecutionlevel>
به این صورت تغییر بدید:

<requestedexecutionlevel level="requireAdministrator" uiaccess="false">
</requestedexecutionlevel>
با اینکار برنامه شما به صوت Adminstrator اجرا میشه و در ویندوز ویستا ، 7 و بالاتر بسته به تنظیمات UAC ویندوز ممکنه قبل از اجرای برنامه تایید مجوز اجرا در این سطح از کاربر خواسته بشه

منبع: http://mtpars.org/

** موفق باشید **

davood_mortazavi
شنبه 21 اردیبهشت 1392, 08:52 صبح
سلام
با روشهای بالا اگر رمز ادمین را نداشته باشیم می تونیم تغییراتی که نیاز به ادمین بودن هست را انجام بدیم . مثلا من کاربر یک شبکه هستم که برای ورود به درایو C باید ادمین باشی حالا میتونم با این روش از داخل برنامه به درایو C دسترسی داشته باشم ؟