Конференция "Прочее" » Разрабатываю новую утилиту AdminLancher
 
  • _koha (01.08.08 19:11) [0]
    Решил поделиться идеей, и обсудить некоторые нюансы.
    Смысл ее в том, чтобы запускать программы от имени "Администратора", так как я постоянно тусуюсь в интернете, то нахожусь всегда под учетной записью пользователя (дабы вирусы всякие не доставали), наступают моменты, когда нужно запускать проги от Админа, "AdminLancher" и пригождается.
    Вы скажете, а чем плох "RunAs"? да тем, что эту пароль нужно вписывать всегда каждый раз - это такой облом, если учесть, что пароль бессмыслица и по сто раз на дню приходится запускать. Не судите строго, но лень двигатель прогресса.

    Сама идея:
    1. Есть сам AdminLancher.exe - это консольное приложение но запускается через контекстное меню windows при открытии файла
      а)получает путь к программе
      б)читает свои параметры из реестра и сохраненный зашифрованный профиль Администратора (имя, пароль)
      в)запускает программу от имени Администратора.
    2. Есть конфигуратор, который
      a)шифрует и сохраняет имя Администратора и пароль в раздел пользователя HKEY_CURRENT_USER\Software\...
        (т.е. другой пользователь вошедший в систему уже не сможет запускать...)
      б)Настраивает контекстное меню windows, чтобы программы можно было запускать через пункт "Run as Admin" подобный "запустить от имени", но при это пароль         писаться не будет.
      Есть проблема:
    3. Касательно самого конфигуратора, если у учетной записи нет прав Админа, то конфигуратор не сможет занести настройки в реестр в ключ exefile/shell/RunAsAdmin/command т.е. необходима поднятие своих прав до уровня Администратора - а это я еще не научился, если подскажете то научусь,
    а так как бы все работает...

    Вот ссылка на действующую программу, для тестирования:
    - запускающий : AdminLancher.exe
    - конфигуратор: LanchConfig.exe
     
    Если будут возникать ошибки или не будет работать, то сообщения из программы сбрасываются в специальную утилиту,
    ее можно скачать здесь:
    http://www.elsetrue.narod.ru/Softfolder/msgloger.7z  

    Код программы AdminLancher.exe:

    program AdminLancher;
    uses
     Windows, SysUtils, Registry, Users, Scrb, MsgLog;
    Type
     PUser = ^TUser;
     TUser = Record
       UserName   : String[20];
       Domain     : String[MAX_COMPUTERNAME_LENGTH];
       UserPass   : String[14];
       UserStatus : String[255];
     end;

    Var
     Reg         : TRegistry;
     Buff        : String;
     BuffSize    : Integer;
     User        : PUser;
     StartupInfo : TStartupInfo;
     ProcessInfo : TProcessInformation;
     AppName     : String;
    Const
     ConfigPath = '\Software\elsetrue\AdminLancher';
     Profile    = 'Profile';
    begin

     if ParamCount = 0 then begin
       SendDebugMsg('Exit: ParamCount = '+IntToStr(ParamCount));
       exit;
     end;

     for BuffSize:=1 to ParamCount do
       AppName:=AppName+ParamStr(BuffSize)+' ';

     SendDebugMsg('ParamCount = '+IntToStr(ParamCount));
     AppName := Trim(AppName);
     SendDebugMsg('AppName = '+AppName);

     try
       Reg:=TRegistry.Create;
       Reg.RootKey:=HKEY_CURRENT_USER;

       if Not Reg.OpenKeyReadOnly(ConfigPath) Then begin
         SendDebugMsg('error: no open key = '+ConfigPath);
         Exit;
       end;

       if Not REg.ValueExists(Profile) Then begin
         SendDebugMsg('error: no value exists = '+Profile);
         Exit;
       end;

       BuffSize:=Reg.GetDataSize(Profile);

       if BuffSize = 0 then begin
         SendDebugMsg('error: GetDataSize = 0');
         Exit;
       end;

       SetLength(Buff,BuffSize);
       FillChar(Buff[1], BuffSize, #0);

       if Reg.ReadBinaryData(Profile,Buff[1],BuffSize) = 0 then begin
         SendDebugMsg('Exet. error: ReadBinaryData readSize = 0');
         Exit;
       end;

     finally
       Reg.Free;
     end;

       //Декодированние прочитанного буффера
       Buff:=DeCode(Buff);

       try
         try
           New(User);
           BuffSize := Sizeof(TUser);
           FillChar(User^, BuffSize, #0);
           Move(Buff[1], User^, BuffSize);

           SendDebugMsg('User Name = '     + User.UserName);
           SendDebugMsg('User Domain = '   + User.Domain);
           SetLength(Buff,Length(User.UserPass));
           FillChar(buff[1],Length(User.UserPass), Ord('*'));
           SendDebugMsg('User Password = ' + Buff);
           SendDebugMsg('User Status = '   + User.UserStatus);

           if Not CreateProcessWithLogonW(
                         PWideChar(StringToWideString(User^.UserName,CP_ACP)),
                         PWideChar(StringToWideString(User^.Domain,CP_ACP)),
                         PWideChar(StringToWideString(User^.UserPass,CP_ACP)), 0, Nil,
                         PWideChar(StringToWideString(AppName,CP_ACP)), 0, Nil, Nil,
                         StartupInfo,
                         ProcessInfo) then
           begin
             SendDebugMsg('CreateProcessWithLogonW = false, GetLastError: '+IntToStr(GetLastError));
             Exit;
           end;

         finally
           Dispose(User);
         end;
       Except
         SendDebugMsg('Critical error: bed copy buffer');
       end;
    end.

  • _koha (01.08.08 19:18) [1]

    > Вот ссылка на действующую программу, для тестирования:
    > - запускающий : AdminLancher.exe
    > - конфигуратор: LanchConfig.exe


    вот ссылка:
    http://webfile.ru/2131244
  • easy © (01.08.08 19:19) [2]

    > наступают моменты, когда нужно запускать проги от Админа

    и что, часто наступают?
  • _koha (01.08.08 19:23) [3]

    > easy ©   (01.08.08 19:19) [2]
    >
    >
    > > наступают моменты, когда нужно запускать проги от Админа
    >
    > и что, часто наступают?

    всегда, когда включаю комп
  • KilkennyCat © (01.08.08 19:29) [4]
    Бедняга...
  • easy © (01.08.08 19:32) [5]

    > пароль бессмыслица и по сто раз на дню приходится запускать

    а, ну тогда на второй день должен запомнится и автоматом биваться. слепым методом..
  • Zeqfreed © (01.08.08 19:44) [6]
    И лишь негромким эхом откуда-то издалека донеслись два слога: su-do.
  • easy © (01.08.08 19:56) [7]

    > _koha (01.08.08 19:11) [0]


    > Zeqfreed © (01.08.08 19:44) [6]


    http://sudown.sourceforge.net/
  • easy © (01.08.08 20:01) [8]

    > донеслись два слога: su-do.

    а чем sudo от runas отличается?
  • Zeqfreed © (01.08.08 20:21) [9]
    > easy ©   (01.08.08 20:01) [8]

    Гибкостью настройки. И пароль оно умеет сохранять.
  • ketmar © (01.08.08 20:24) [10]
    >[8] easy © (2008-08-01 20:01:00)
    >а чем sudo от runas отличается?

    а ты man sudoers скажи и сильно удивись. а потом покажи хотя бы половину таких возможностей в runas.

    ---
    All Your Base Are Belong to Us
  • easy © (01.08.08 20:28) [11]

    > [9][10]

    а че я сказал-то? спросил просто..
  • _koha (01.08.08 20:29) [12]
    Про Su-do конечно же не ухом и не рылом не вел, так бы уже установил, но все равно такую утилиту написал бы, хотя бы для саморазвития. Мне многое еще не понятно, например, как свой процесс поднять в привилегиях повыше и использовать чужие, пытался понять заблудился в этих "токинах" нигде толком не написано, хоть бы талмуд найти по лучше  :-(
  • ketmar © (01.08.08 20:30) [13]
    >[11] easy © (2008-08-01 20:28:00)
    да и мы так… ничо…

    ---
    All Your Base Are Belong to Us
  • _koha (01.08.08 20:37) [14]
    Повезло там и сорцы есть, мона изучать, права линусоидные но всеравно покатит :-)
  • easy © (01.08.08 20:41) [15]

    > ketmar © (01.08.08 20:24) [10]

    если честно - так парит эти маны читать..  у мне и так чтива хватает.. =|
  • ketmar © (01.08.08 20:44) [16]
    >[15] easy © (2008-08-01 20:41:00)
    а я вот избранные места люблю перечитывать…

    ---
    Understanding is not required. Only obedience.
  • Anatoly Podgoretsky © (01.08.08 21:14) [17]
    > ketmar  (01.08.2008 20:44:16)  [16]

    А читать все подряд - это что то с головой.
  • Marser © (01.08.08 21:55) [18]
    Launcher?
  • _koha (01.08.08 22:01) [19]

    > Marser ©   (01.08.08 21:55) [18]
    > Launcher?


    - просто по рукой словаря небыло, за всякие PROMT плаить же "нада" ;-)
  • sniknik © (01.08.08 22:32) [20]
    > запускать программы от имени "Администратора"
    в проводнике на любом exe-нике правой кнопкой мыши, сразу под пунктом "открыть" пункт "запуск от имени".
  • sniknik © (01.08.08 22:42) [21]
    > пароль нужно вписывать всегда каждый раз - это такой облом
    1 раз запустить far например, под админом, все остальное требующее адмнских прав запускать из него... итого 1 раз в день вписать пароль. или это для тебя тоже облом?
  • easy © (01.08.08 22:53) [22]

    > _koha (01.08.08 22:01) [19]
    >
    > > Marser ©   (01.08.08 21:55) [18]
    > > Launcher?
    >
    >
    > - просто по рукой словаря небыло


    http://translate.google.com/
    bed, кстати - это кровать
  • _koha (01.08.08 23:08) [23]

    > sniknik ©   (01.08.08 22:42) [21]
    >
    > > пароль нужно вписывать всегда каждый раз - это такой облом
    > 1 раз запустить far например, под админом, все остальное
    > требующее адмнских прав запускать из него... итого 1 раз
    > в день вписать пароль. или это для тебя тоже облом?


    Это тоже великий блом, а если я этой хренью не люблю пользоваться, так ка весит целый день толька глаза мозолит, так и тянуться руки прихлопнуть их всех. Тем не мене "тоталом" и пользовался, у него всю панель забил значками, в общем достал он меня окончательно, пока не придумал это. Словно камень с экрана свалился.
  • umbra © (01.08.08 23:11) [24]

    > > easy ©   (01.08.08 20:01) [8]
    >
    > Гибкостью настройки. И пароль оно умеет сохранять.
    >

    runas ...... /savecred



    сохраняет пароль. только вот после этого открывается дыра.
  • Zeqfreed © (02.08.08 10:46) [25]
    > umbra ©   (01.08.08 23:11) [24]

    Оно пароль умеет сохранять на N времени. Без дырок.
  • Рамиль © (02.08.08 11:23) [26]
    Поставь Висту.
    Правой кнопкой и без паролей.
  • ПЛОВ © (02.08.08 11:36) [27]
    Мне не хватает только двух программ для полного счастья: запуздыривателя иконки в трей от имени админа, и админской открывалки СД-привода. Жду пока хто-нить напишет...
  • Правильный$Вася (02.08.08 15:14) [28]

    > админской открывалки СД-привода.

    а закрывалка?!!!
 
Конференция "Прочее" » Разрабатываю новую утилиту AdminLancher
Есть новые Нет новых   [134439   +53][b:0][p:0.003]