PDA

View Full Version : سوال: اجرای برنامه در سطح مدیریت ( run as administrator )



terrorhell
یک شنبه 06 اردیبهشت 1394, 13:22 عصر
سلام دوستان
چطوری میشه نرم افزارو با سطح دسترسی ادمین اجرا کرد ؟؟
یعنی وقتی از برنامه خروجی exe میگیریم نرم افزار run as adminitor باشه و بدون promt

لطفاً راهنمایی کنید مرسی

tarsim
یک شنبه 06 اردیبهشت 1394, 13:35 عصر
سلام دوست عزیز یه راه بهت پیش نهاد میدم به کد نویسی نیازی نیست امیدوارم مشکلت رو حل کنه
اگر ویندوز 7 داری روی خروجیت کلیک راست کن properties رو بزن به سربرگ compatibitiliy برو و پایین صفحه تیک run this program as an administrator رو بزن
با اینکار همیشه به صورت administrator اجرا میشه.

Javad_raouf
یک شنبه 06 اردیبهشت 1394, 13:44 عصر
اگه سوالتون رو درست متوجه شده باشم
public static System.Diagnostics.Process RunAsAdministrator(string FileName)
{
var proc = new System.Diagnostics.ProcessStartInfo();
proc.UseShellExecute = true;
proc.FileName = FileName;
proc.Verb = "runas";//Run As Administrator
try
{
return System.Diagnostics.Process.Start(proc);
}
catch (Exception err)
{
MessageBox.Show(err.Message);
return null;
}
}
با استفاده از این متد هر برنامه ای رو می تونی به صورت RunAsAdmin اجرا کنید

Naghibi
یک شنبه 06 اردیبهشت 1394, 13:48 عصر
می تونین از این کد توی config برنامه استفاده کنین


<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>

terrorhell
یک شنبه 06 اردیبهشت 1394, 13:52 عصر
مرسی دوستان ولی این روشی که شما میگید promt رو از کاربر میگیره و ازش میخواد که روی YES کلیک کنه
میخوام windows prompt هم نمایش نده

در ضمن آقای جواد رئوفی کد شمارو کجای برنامم بزارم ؟

ali_72
دوشنبه 07 اردیبهشت 1394, 08:35 صبح
مرسی دوستان ولی این روشی که شما میگید promt رو از کاربر میگیره و ازش میخواد که روی YES کلیک کنه
میخوام windows prompt هم نمایش نده


using (Process process = new Process())
{

process.StartInfo.UseShellExecute = false;
//
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

محمد رضا فاتحی
دوشنبه 07 اردیبهشت 1394, 08:35 صبح
یه جایی خوندم گفته بود اینطوری عمل کنید شما هم امتحان کن ببین درسته یا نه
روی پروژه راست کلیک ، add ،newitem,application manifist file بعد از اضافه شدن فایل خط
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
رو باید به این تغییر بدی
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

Javad_raouf
دوشنبه 07 اردیبهشت 1394, 13:49 عصر
می تونین از این کد توی config برنامه استفاده کنین


<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>

من از این کد توی App.Config استفاده کردم موجب شد زمانی که داره SqlConnection ساخته میشه نرم افزار این ارور رو بده:

The type initializer for 'System.Data.SqlClient.SqlConnection' threw an exception
اینم کد APP.Config بعد از الحاق کدی که شما گفتید:

<?xml version="1.0" encoding="utf-8" ?><configuration>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">


<security>


<requestedPrivileges>


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


</requestedPrivileges>


</security>


</trustInfo>
<configSections>
</configSections>
<connectionStrings>
<add name="company49.Properties.Settings.Setting" connectionString="Data Source=192.168.2.52;Initial Catalog=Company49;User ID=sa;Password=123;Network Library=dbnmpntw"
providerName="System.Data.SqlClient" />
<add name="company49.Properties.Settings.Setting1" connectionString="Data Source=MJ-NOTE\SQL2008;Initial Catalog=Raouf_eskenas;User ID=sa;Password=123"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="AutoUpdateSoap" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://soft49.ir/AutoUpdate.asmx" binding="basicHttpBinding"
bindingConfiguration="AutoUpdateSoap" contract="AutoUpdate.AutoUpdateSoap"
name="AutoUpdateSoap" />
</client>
</system.serviceModel>
</configuration>


در ضمن آقای جواد رئوفی کد شمارو کجای برنامم بزارم ؟
این کدی که من گذاشتم هر کجای برنامت بزاری برنامه رو ReStart می کنه و با RunAsAdmin باز می کنه
من وقتی که لازم دارم برنامم Admin باشه از این کد استفاده می کنم
خیلی ایده خوبی نیست

Javad_raouf
دوشنبه 07 اردیبهشت 1394, 14:22 عصر
مرسی دوستان ولی این روشی که شما میگید promt رو از کاربر میگیره و ازش میخواد که روی YES کلیک کنه
میخوام windows prompt هم نمایش نده
فکر نمی کنم چنین چیزی امکان داشته باشه
مگر اینکه توی سیستم کاربر تنظیمات change user Account Control Setting رو بر روی Never Notify قرار بدی
اینجوری دیگه اون پنجره ای که میگید هم باز نمیشه


من از این کد توی App.Config استفاده کردم موجب شد زمانی که داره SqlConnection ساخته میشه نرم افزار این ارور رو بده:
جواب این سوالم رو از اینجا (http://stackoverflow.com/questions/2818179/how-to-force-my-net-app-to-run-as-administrator-on-windows-7) گرفتم
در حقیقت این کد رو باید در فایل Manifest قرار بدیم نه در فایل app.config