برای طرح سوال و دسترسی به آموزش ها  کانال ما در تلگرام بپویندید  

اجرای برنامه در سطح دسترسی root در lazarus

به نام دانای برحق

مقدمه

شاید اگر شما با لینوکس و دلفی با هم کار کردید سراغ لازاروس هم رفته باشید این پلنگ مظلوم خوب با برنامه نویس های دلفی راه میادش با وجود لنگ زدن بازم سعی می کنه هواتو داشته باشه اما مسائله ای تو لینوکس وجو داره که توی ویندوز هم بخشی از بدل زده شده تو لینوکس دسترسی برنامه ها دو حالت هستش حالت کاربر عادی یا کاربر 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  درخواست میشه و پس از ورود صحیح برنامه با حالت روت بالا میادش.


انتشار

در

,

توسط

برچسب‌ها:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *