PDA

View Full Version : مشکل اجرای برنامه در ویندوز 7



mir555
پنج شنبه 01 بهمن 1388, 08:22 صبح
من یک برنامه نوشتم که احتیاج داره که تو درایو c فایل بنویسم و همچنین از یک سری فایل های اصلی ویندوز استفاده می کنه
حالا مشکل اینجاست که اگر برنامه run as administrator نشه برنامه با access dine مواجه می شه می خوام یک کاری کنم وقتی برنامه باز میشه خودش تو مد ادمین اجرا بشه

SMRAH1
پنج شنبه 01 بهمن 1388, 10:58 صبح
سلام
به نظر شما اگر هر برنامه ای «وقتی برنامه باز میشه خودش تو مد ادمین اجرا بشه» باشه برای سیستم مشکل پیش نمیاد؟؟!! (خوش به حال هکر ها میشه و ویروس ها جولان می دن).
البته قطعا bug هایی وجود داره (که در محصولات مایکروسافت بعید نیست) که این کار رو بکنه (که من از اون بی اطلاع هستم و هکر ها در به در دنبال یه همچنین باگ هایی هستند).
خوب سئوال پیش میاد که چرا برخی از برنامه ها (دقیق تر بگم، سرویس ها) با دسترسی Admin اجرا میشن (در هنگام راه اندازی ویندوز)؟جواب ساده است،یک بار در دسترسی ادمین اجرا شده و به عنوان سرویس (با همان نام کاربری) وارد سرویسی ها ی ویندوز شده اند.در نتیجه با هر اجرا می توانند با دسترسی admin اجرا می شوند (این بحث پیچیده تر از آن است که اینجا بشه توضیح داد - البته شما خودتان استادید ولی این ها را برای دوستان تازه کار که ممکنه بعدا این مطالب رو بخونند نوشتم).
موفق باشید

mir555
پنج شنبه 01 بهمن 1388, 12:31 عصر
در تکمیل صحبت این دوستمون بگم سرویس های که بصورت ادمین اجرا می شن تو قسمت اکانت یوز ادمین براشون تعریف شده
حالا من نمی گم برنامم بدون اینکه کاربر بفهمه این طور اجرا بشه اگه از کاربر هم تایید بگیره مشکلی نداره

vcldeveloper
پنج شنبه 01 بهمن 1388, 13:06 عصر
در ویندوز 7 برنامه ها به طور عادی حق نوشتن در ریشه درایو C رو ندارند. البته این مضاف بر محدودیت های قبلی هست که از زمان ویستا اعمال شدند (مثل محدودیت نوشتن در پوشه Windows یا Program Files).

حتی اگر برنامه شما توسط کاربر Admin هم اجرا بشه، باز هم تا زمانی که صراحتا درخواست افزایش اختیارات را نکنه، دسترسی های Admin نخواهد داشت.
برای اینکه برنامه ایی همچین سطح دسترسی داشته باشه، باید یک Manifest به پروژه خودتون اضافه کنید، و در آن سطح Privilege مورد نیاز برنامه تون رو Administrator تعیین کنید.

البته اگر برنامه شما یک برنامه سیستمی نیست، باید برنامه تون رو طوری تغییر بدید که نیاز نداشته باشه در این پوشه ها چیزی بنویسه. این پوشه ها برای نوشتن برنامه ها طراحی نشدند. اگر برنامه شما میخواد فایلی رو ذخیره یا ویرایش کنه، باید برای این کار از پوشه های مخصوص این کار استفاده کنه، مثلا پوشه AppData که برای نگهداری داده های هر برنامه استفاده میشه.