اگه شما تنظیم لازم رو برای برنامه تون انجام بدید و تنظیم UAC یا User Account Control ویندوز هم در سیستم کاربر غیر فعال نباشه، خود ویندوز صفحه رو تاریک می کنه و از کاربر برای اجرا شدن برنامه شما
پیغام میده، وگرنه با UAC غیر فعال کاربر متوجه نمیشه و برنامه تون خطا میده و بهتره که خودتون با try catch در برنامه تون یک پیغام به کاربر نشون بدید که لطفا با دسترسی Administrator اجرایش کنید.
در ویژوال استدیو که پروژه تون باز ئه، در منوی Project گزینه ...Add New Item رو انتخاب کنید. در بخش General گزینه Application Manifest File رو انتخاب کنید و به پروژه تون اضافه کنید.
در کد اون فایلی که اضافه شده یک سطر کد </ "requestedExecutionLevel level="asInvoker" uiAccess="false> هست که رنگ مقادیر asInvoker و false اش مشخصا فرق می کنه
(با سطر های توضیحی بالاترشون که تماما یک رنگ هستند اشتباه نگیرید)
مقدار اون asInvoker رو باید به requireAdministrator تغییر بدهید تا برنامه تون به سیستم عامل اعلام کنه که به دسترسی Administrator نیاز داره. (شبیه به اون سطر چند خط بالاتر هست که البته توضیحی ئه و نادیده گرفته میشه.)
در ضمن در کد ()CheckLogin تان try catch ندارید. بهتره که اضافه کنید تا بجای اون خطای UnauthorizedAccessException یک پیغام مناسب نشون بده :
کد:
private bool CheckLogin()
{
try
{
if (File.Exists(ConfigurationManager.AppSettings["login_info"]))
{
StreamReader sr = new StreamReader(ConfigurationManager.AppSettings["login_info"]);
string message = sr.ReadToEnd();
sr.Close();
message = EncryptString.Decrypt_Text(message);
if (message != null)
{
string[] login_data = message.Split('&');
if (login_data.Length == 4)
{
int user_id = int.Parse(login_data[0]);
string computer_name = login_data[1];
string cookie = login_data[2];
DateTime expire = DateTime.Parse(login_data[3]);
if (computer_name != Environment.UserDomainName)
{
MessageBox.Show("اطلاعات لاگین مربوط به شما نمی باشد", "MS", MessageBoxButton.OK, MessageBoxImage.Error);
}
else if (DateTime.Now.Subtract(expire).Days == 0)
{
MessageBox.Show("کوکی شما منقضی شده است. مجددا به سرور متصل شوید", "MS",
MessageBoxButton.OK, MessageBoxImage.Waing);
}
else
{
Share.cookie = cookie;
Share.userID = user_id;
retu true;
}
}
}
}
else
File.CreateText(ConfigurationManager.AppSettings["login_info"]);
}
catch
{
MessageBox.Show("برنامه به دسترسی ادمین نیازمند است", "MS", MessageBoxButton.OK, MessageBoxImage.Error);
}
retu false;
}
برچسب:
نویسنده: محمد رضا جوادیان