Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Запуск программы от имени...  [new]
-User-
Member

Откуда: Норильск
Сообщений: 131
Подскажите пожалуйсто, как можно запустить свою программу под другой учёткой.
Хочу чтобы юзер запустил прогу под сабой, а прога была с админскими правами.
30 май 07, 13:11    [4204292]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
_spin_
Member

Откуда: ru
Сообщений: 72
Раздели прогу на 2 модуля - интерфейс пусть крутится от имени пользователя, а все действия, которые должеы быть выполнены от имени админа - пусть выполняет служба,запущенная от его имени.
30 май 07, 13:18    [4204361]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
_spin_
Member

Откуда: ru
Сообщений: 72
Запуск процеса от другого имени - CreateProcessAsUser
30 май 07, 13:19    [4204365]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6367
за что отвечает и работает ли вообще CreateProcessAsUser - вопрос, конечно, интересный :) На практике обычно используют CreateProcessWithLogon...
30 май 07, 13:48    [4204677]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6367
примерно так (сляпал из того, что в инете валяется):
//-----------------------------------------------------------------------------
type
TCreateProcessWithLogonW = function(
lpUsername : PWideChar;
lpDomain : PWideChar;
lpPassword : PWideChar;
dwLogonFlags : DWORD;
lpApplicationName : PWideChar;
lpCommandLine : PWideChar;
dwCreationFlags : DWORD;
lpEnvironment : Pointer;
lpCurrentDirectory : PWideChar;
const lpStartupInfo : _STARTUPINFOA;
var lpProcessInfo : PROCESS_INFORMATION):BOOL;stdcall;
//====================================
function StringToPWide(sStr: string; var iNewSize: integer): PWideChar;
var
  pw: PWideChar;
  iSize: integer;
begin
  Result := nil;
  try
    iSize := Length(sStr) + 1;
    iNewSize := iSize * 2;
    pw := AllocMem(iNewSize);
    MultiByteToWideChar(CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize);
    Result := pw;
  except
    ;
  end;
end;
//===================================
procedure RunAppWithLogon(my_uname : string; my_pwl : string; my_process : string; my_show : bool);
  var
    hLib:THandle;
    CreateProcessWithLogon : TCreateProcessWithLogonW;
    si : _STARTUPINFOA;
    pi : Process_Information;
    my_wchar_uname, my_wchar_pwl, my_wchar_process : PWideChar;
    iSize1, iSize2, iSize3 : integer;
  begin
    try
      hLib:=LoadLibrary('advapi32.dll');
      ZeroMemory(@Si,Sizeof(si));
      si.cb:=SizeOf(si);
      si.dwFlags := STARTF_USESHOWWINDOW;
      if my_show = true then si.wShowWindow := SW_SHOW else si.wShowWindow := SW_HIDE;
      my_wchar_uname := StringToPWide(my_uname,iSize1);
      my_wchar_pwl := StringToPWide(my_pwl,iSize2);
      my_wchar_process := StringToPWide(my_process,iSize3);
      CreateProcessWithLogon:=GetProcAddress(hLib,'CreateProcessWithLogonW');
      CreateProcessWithLogon(my_wchar_uname,nil,my_wchar_pwl,1,nil,my_wchar_process,0,nil,nil,si,pi);
    except
      ;
    end;
  end;
//==================================
30 май 07, 13:52    [4204724]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
-User-
Member

Откуда: Норильск
Сообщений: 131
А может CreateProcessAsUser или CreateProcessWithLogon пустить мою прогу под админом?
Если да, то можно просто прогу пускать CreateProcessAsUser или CreateProcessWithLogon.
31 май 07, 10:02    [4209196]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
Tosh
Member

Откуда: Vladivostok
Сообщений: 2958
Они все могу - логин и пароль толко вбивай - запустят хоть систему самоуничтожения ...

ну никакого представления у сегодняшних программеров о модели безопасности винды
31 май 07, 10:04    [4209216]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
-User-
Member

Откуда: Норильск
Сообщений: 131
Всем огромное СПАСИБО!!!

2Tosh Систему самоуничтожения запускать не пробовал, а вот всё остальное очень даже здорово запускается :)
31 май 07, 11:27    [4210184]     Ответить | Цитировать Сообщить модератору
 Re: Запуск программы от имени...  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62926
-User-
А может CreateProcessAsUser или CreateProcessWithLogon пустить мою прогу под админом?
Если да, то можно просто прогу пускать CreateProcessAsUser или CreateProcessWithLogon.

Первое точно может, а вот второе не совсем, логон может быть запрещен
31 май 07, 18:56    [4214310]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить