اجرا شدن نرم افزار با سطح Administrator در Vb.net

ms_vb

Member
سلام
بعد از Build کردن نرم افزار برای اینکه فایل اجرایی(EXE) نرم افزارم بدون مشکل اجرا شود مجبورم روی آن کلیک راست کرده و Run as administrator را انتخاب کنم
حالا چکار کنم که برنامه به گونه ای Build شود که هنگامی که کاربر آن را اجرا کرد با سطح دسترسی مدیر اجرا شود؟
و دیگر احتیاجی به کلیک راست کردن روی آن و انتخاب این گزینه یا تنظیم آن از طریق Property این فایل نباشد.
بازهم ممنون از راهنمایی هایتان
 

the_king

مدیرکل انجمن
سلام
بعد از Build کردن نرم افزار برای اینکه فایل اجرایی(EXE) نرم افزارم بدون مشکل اجرا شود مجبورم روی آن کلیک راست کرده و Run as administrator را انتخاب کنم
حالا چکار کنم که برنامه به گونه ای Build شود که هنگامی که کاربر آن را اجرا کرد با سطح دسترسی مدیر اجرا شود؟
و دیگر احتیاجی به کلیک راست کردن روی آن و انتخاب این گزینه یا تنظیم آن از طریق Property این فایل نباشد.
بازهم ممنون از راهنمایی هایتان

فرقی با سایر برنامه ها نداره، اگه کاربر مورد نظر که لاگین کرده 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.GetCurrent())
        If principal.IsInRole(Security.Principal.WindowsBuiltInRole.Administrator) = False Then
            MessageBox.Show("This application requires administrative access." _
                , "Insufficient permissions", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Application.Exit()
        End If
در کل شما باید هر دو مورد رو پیاده کنید. هم تنظیمات UAC رو در نظر بگیرید و هم حالتی که غیر فعاله.
 

ms_vb

Member
آقا خیلی، خیلی ممنون:rose:

فقط یه سوال دیگه
برای تغییر نام Publisher هم باید از این قسمت اقدام کنم؟
 

the_king

مدیرکل انجمن
آقا خیلی، خیلی ممنون:rose:

فقط یه سوال دیگه
برای تغییر نام Publisher هم باید از این قسمت اقدام کنم؟

در منوی Project ویژوال استدیو گزینه ...Project name} Properties} را انتخاب کنید. در بخش Publish روی دکمه Options کلیک کنید. در بخش Description گزینه Publisher Name هست.
 

ms_vb

Member
خیلی ممنون از جوابتون
من قبلا این کار رو کردم
ولی هنگامی که نرم افزار را در مد UAC اجرا میکنم و پیام User Account Control نمایش داده می شود، مقدار Publisher:Unknown می باشد!
 

the_king

مدیرکل انجمن
خیلی ممنون از جوابتون
من قبلا این کار رو کردم
ولی هنگامی که نرم افزار را در مد UAC اجرا میکنم و پیام User Account Control نمایش داده می شود، مقدار Publisher:Unknown می باشد!

از دید UAC معنای Publisher فقط این نیست که شما بنویسید Microsoft و اونم به کاربر اعلام کنه که Publisher این نرم افزار Microsoft ئه، UAC
هر نرم افزاری که امضاء تایید اعتبار شده نداره رو Unknown Publisher اعلام می کنه، بدون توجه به مقدار Publisher ای که نوشته اید.
امضاء دیجیتال رو از طریق مراجعی مثل verisign می خرند.
 

جدیدترین ارسال ها

بالا