Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CreateProcess и права пользователя


Nilman ©   (2010-02-24 13:51:00) 

Была вот такая функция которая успешно работала в XP:

procedure RunAndWait(Command: string);
var
 SI: _STARTUPINFO;
 PI: _PROCESS_INFORMATION;
begin
 FillChar(SI, sizeof(SI), #0);
 SI.cb:=sizeof(SI);
 FillChar(PI, sizeof(PI), #0);
 CreateProcess(nil,PChar(Command),nil,nil,false,0,nil,nil,SI,PI);
 WaitForSingleObject(PI.hProcess,INFINITE);
end;


Использовалась она для silent запуска инсталятора InstallAware. Проблема в системах с UAC. Инсталлятор запускать нужно с правами админа, при запуске из explorer появляется запрос на повышение прав, total commander который сам работает по обычным юзером, тоже выдаёт сообщение о том что нужно повышение прав для запуска, а вот как научить мою программу спрашивать повышение прав, пока не знаю.. Помогите пож кто сталкивался с проблемой..


Nilman   (2010-02-25 10:36:00) [1]

ну собсно проблема решена с помощью недокументированного значения lpVerb 'runas'. если кому интересно, вот код который получился:

procedure RunAndWait(Command: string);
var
 ShellExecuteInfoW: PShellExecuteInfoW;
begin
 try
   GetMem(ShellExecuteInfoW, SizeOf(TShellExecuteInfoW));
   ShellExecuteInfoW^.cbSize:=SizeOf(TShellExecuteInfoW);
   ShellExecuteInfoW^.fMask:=0;
   ShellExecuteInfoW^.lpVerb:='runas';
   ShellExecuteInfoW^.lpFile:=PChar(Command);
   ShellExecuteInfoW^.lpParameters:='';
   ShellExecuteInfoW^.lpDirectory:=PChar(ExtractFilePath(Command));

   ShellExecuteEx(ShellExecuteInfoW);
   WaitForSingleObject(ShellExecuteInfoW.hProcess,INFINITE);
 finally
   FreeMem(ShellExecuteInfoW);
 end;
end;

спасибо всем!


12   (2010-02-24 14:26:00) [2]

сам искал как-то, но уже не могу проверить
мы успешно все даунгрейдили (по другим обстоятельствам)
http://www.interface.ru/home.asp?artId=21156


> Игорь Шевченко ©

т.е. можно жить с UAC нормально?
имею ввиду, если корректно писать.
а то неприятно утром увидеть на экране вопрос, висевший всю ночь, и понять что ничего собственно и не делалось


Игорь Шевченко   (2010-02-24 14:15:00) [3]


> Была вот такая функция которая успешно работала в XP


Плохая была функция, коды возвратов не анализировала. Исправь


12   (2010-02-24 14:03:00) [4]

а try except не ловит ничего?


Наверх

Титульная страница Поиск, карта сайта Написать письмо