به نام دانای برحق
مقدمه
شاید اگر شما با لینوکس و دلفی با هم کار کردید سراغ لازاروس هم رفته باشید این پلنگ مظلوم خوب با برنامه نویس های دلفی راه میادش با وجود لنگ زدن بازم سعی می کنه هواتو داشته باشه اما مسائله ای تو لینوکس وجو داره که توی ویندوز هم بخشی از بدل زده شده تو لینوکس دسترسی برنامه ها دو حالت هستش حالت کاربر عادی یا کاربر root یا ریشه که دسترسی کامل رو سیستم داره.
همین حالت تقریبا همون معادل run as admin در ویندوز هست اما با تفاوت های فاحش که اینجا جای بحث نیست.
این مطلب فک نکنم حتی به انگلیسی وجود داشته باشه ولی ما فقط به پارسی منتشرش می کنیم.
موارد مورد استفاده :
یونیت (ها):
Process
تابع (ها) :
GetUserDir , RunCommand
سایر موارد
Application class, gksu app
نحوه run شدن برنامه در حالت دسترسی root :
روی فرمتون دوبار کلیک کنید تا رویداد FormCreate برای ویرایش نمایش داده شود سپس کد زیر رو داخل کپی کنید:
uses Process; ... procedure xxxx.FormCreate(Sender: TObject); var outp : String; ... begin if Pos('root',GetUserDir()) > 0 then begin ShowMessage('now root access N-Joy'); end else begin //ShowMessage('non-root'); RunCommand('gksu',' '+Application.ExeName,outp); //ShowMessage(outp); Application.Terminate; end; end;
البته با توجه با تغییرات در حد درک برنامه نویسش و توضیحات:
یونیت مورد نظر رو اضافه می کنیم با تابع GetUserDir و جستجو در آن متوجه میشم که این یوزر ریشه است یا خیر؟
در صورت ریشه نبودن دستور RunCammand رو اجرا می کنیم این دستور کارش خیلی ساده است با دستور gksu پسورد رو از کاربر میخواد با این برنامه برنامه خودمون رو دوباره باز می کنیم.
به همین سادگی پس از باز شدن برنامه از کاربر password درخواست میشه و پس از ورود صحیح برنامه با حالت روت بالا میادش.
دیدگاهتان را بنویسید لغو پاسخ