Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Вниз

Разрабатываю новую утилиту AdminLancher   Найти похожие ветки 

 
_koha   (2008-08-01 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   (2008-08-01 19:18) [1]


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


вот ссылка:
http://webfile.ru/2131244


 
easy ©   (2008-08-01 19:19) [2]


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

и что, часто наступают?


 
_koha   (2008-08-01 19:23) [3]


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

всегда, когда включаю комп


 
KilkennyCat ©   (2008-08-01 19:29) [4]

Бедняга...


 
easy ©   (2008-08-01 19:32) [5]


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

а, ну тогда на второй день должен запомнится и автоматом биваться. слепым методом..


 
Zeqfreed ©   (2008-08-01 19:44) [6]

И лишь негромким эхом откуда-то издалека донеслись два слога: su-do.


 
easy ©   (2008-08-01 19:56) [7]


> _koha (01.08.08 19:11) [0]


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


http://sudown.sourceforge.net/


 
easy ©   (2008-08-01 20:01) [8]


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

а чем sudo от runas отличается?


 
Zeqfreed ©   (2008-08-01 20:21) [9]

> easy ©   (01.08.08 20:01) [8]

Гибкостью настройки. И пароль оно умеет сохранять.


 
ketmar ©   (2008-08-01 20:24) [10]

>[8] easy © (2008-08-01 20:01:00)
>а чем sudo от runas отличается?

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

---
All Your Base Are Belong to Us


 
easy ©   (2008-08-01 20:28) [11]


> [9][10]

а че я сказал-то? спросил просто..


 
_koha   (2008-08-01 20:29) [12]

Про Su-do конечно же не ухом и не рылом не вел, так бы уже установил, но все равно такую утилиту написал бы, хотя бы для саморазвития. Мне многое еще не понятно, например, как свой процесс поднять в привилегиях повыше и использовать чужие, пытался понять заблудился в этих "токинах" нигде толком не написано, хоть бы талмуд найти по лучше  :-(


 
ketmar ©   (2008-08-01 20:30) [13]

>[11] easy © (2008-08-01 20:28:00)
да и мы так… ничо…

---
All Your Base Are Belong to Us


 
_koha   (2008-08-01 20:37) [14]

Повезло там и сорцы есть, мона изучать, права линусоидные но всеравно покатит :-)


 
easy ©   (2008-08-01 20:41) [15]


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

если честно - так парит эти маны читать..  у мне и так чтива хватает.. =|


 
ketmar ©   (2008-08-01 20:44) [16]

>[15] easy © (2008-08-01 20:41:00)
а я вот избранные места люблю перечитывать…

---
Understanding is not required. Only obedience.


 
Anatoly Podgoretsky ©   (2008-08-01 21:14) [17]

> ketmar  (01.08.2008 20:44:16)  [16]

А читать все подряд - это что то с головой.


 
Marser ©   (2008-08-01 21:55) [18]

Launcher?


 
_koha   (2008-08-01 22:01) [19]


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


- просто по рукой словаря небыло, за всякие PROMT плаить же "нада" ;-)


 
sniknik ©   (2008-08-01 22:32) [20]

> запускать программы от имени "Администратора"
в проводнике на любом exe-нике правой кнопкой мыши, сразу под пунктом "открыть" пункт "запуск от имени".


 
sniknik ©   (2008-08-01 22:42) [21]

> пароль нужно вписывать всегда каждый раз - это такой облом
1 раз запустить far например, под админом, все остальное требующее адмнских прав запускать из него... итого 1 раз в день вписать пароль. или это для тебя тоже облом?


 
easy ©   (2008-08-01 22:53) [22]


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


http://translate.google.com/
bed, кстати - это кровать


 
_koha   (2008-08-01 23:08) [23]


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


Это тоже великий блом, а если я этой хренью не люблю пользоваться, так ка весит целый день толька глаза мозолит, так и тянуться руки прихлопнуть их всех. Тем не мене "тоталом" и пользовался, у него всю панель забил значками, в общем достал он меня окончательно, пока не придумал это. Словно камень с экрана свалился.


 
umbra ©   (2008-08-01 23:11) [24]


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

runas ...... /savecred

сохраняет пароль. только вот после этого открывается дыра.


 
Zeqfreed ©   (2008-08-02 10:46) [25]

> umbra ©   (01.08.08 23:11) [24]

Оно пароль умеет сохранять на N времени. Без дырок.


 
Рамиль ©   (2008-08-02 11:23) [26]

Поставь Висту.
Правой кнопкой и без паролей.


 
ПЛОВ ©   (2008-08-02 11:36) [27]

Мне не хватает только двух программ для полного счастья: запуздыривателя иконки в трей от имени админа, и админской открывалки СД-привода. Жду пока хто-нить напишет...


 
Правильный$Вася   (2008-08-02 15:14) [28]


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

а закрывалка?!!!


 
ПЛОВ ©   (2008-08-02 23:37) [29]


> а закрывалка?!!!

Нога


 
ПЛОВ ©   (2008-08-02 23:43) [30]

Не, я конечно понимаю что написать свою "утилиту" это круто. Но если она по сути предназначена для решения конкретной задачи конкретного пользователя - то зачем об этом кричать на весь форум? Вот я тож недавно написал офигенную утилиту - Автоматический запускатель спулера :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.007 c
3-1206358955
Альберт
2008-03-24 14:42
2008.09.21
Как сформировать запрос с апострофом


2-1218506684
Abcdef123
2008-08-12 06:04
2008.09.21
Проблемы перевода проекта с Delphi6 на Delphi 2007


15-1217591906
oldman
2008-08-01 15:58
2008.09.21
Завтра выходной, будут не все. Примите поздравления заранее...


2-1218215765
Rimdus
2008-08-08 21:16
2008.09.21
Работа с датами


2-1218444298
Neon-w
2008-08-11 12:44
2008.09.21
Собрать из двух один)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский