Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / программно запустить exe файл с правами администратора / 10 сообщений из 10, страница 1 из 1
16.07.2019, 15:38
    #39837930
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
есть программа, которая запускает некоторые процессы, и один из процессов является запускной файл exe, которая вносит в реестр изменения, допустим 0 или 1,
так вот, если ярлык программы в Windows настроен что запускать от Администратора, то все работает. А если запускаем от обычного, то конечно нет.

Как сказать программе, которая запускает процессы и программы, чтобы некоторые программы запускались от Администратора.

в Delphi.

Спас.
...
Рейтинг: 0 / 0
16.07.2019, 15:44
    #39837933
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
yemets63,

в манифесте программы указать, что необходим запуск от Администратора
...
Рейтинг: 0 / 0
16.07.2019, 16:05
    #39837945
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
запустить другую программу из-под администратора (если знаешь его пароль :)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
function CreateProcessWithLogonW; external 'advapi32.dll' name 'CreateProcessWithLogonW';



procedure ExecAsDifferentUser(const AUserName: string;
                              const ADomain: string;
                              const APassword: string;
                              const ACommand: string;
                              out AProcessInf: TProcessInformation);
var
   bSuccess       : boolean;
   recStartupInfo : TStartupInfoW;
begin
   FillChar(recStartupInfo, SizeOf(recStartupInfo), #0);
   recStartupInfo.cb:= SizeOf(recStartupInfo);
   recStartupInfo.dwFlags:= STARTF_USESHOWWINDOW;
   recStartupInfo.wShowWindow:= 1;

   FillChar(AProcessInf, SizeOf(AProcessInf), #0);

   SetLastError(0);

   bSuccess := CreateProcessWithLogonW(
      StringToOleStr(AUserName),       // lpUsername,
      StringToOleStr(ADomain),         // lpDomain,
      StringToOleStr(APassword),       // lpPassword: PWideChar;
      LOGON_WITH_PROFILE,              // dwLogonFlags: DWORD;
      StringToOleStr(''),              // lpApplicationName,
      StringToOleStr(ACommand),        // lpCommandLine: PWideChar;
      0,                               // dwCreationFlags: DWORD;
      nil,                             // lpEnvironment: pointer;
      StringToOleStr(''),              // lpCurrentDirectory: PWideChar;
      @recStartupInfo,                 // lpStartupInfo: PStartupInfoW;
      @AProcessInf                     // lpProcessInformation: PProcessInformation
      );

   if not bSuccess then
      RaiseLastOSError();
end;
--------------------------------------------------------------------------------
var
   sCmd                : string;
   recProcessInfo      : TProcessInformation;
const
   ANY_EXE_PATH        = 'C:\Windows\Notepad.exe';
   ANY_EXE_PARAM       = 'C:\Windows\System32\tsadmin.msc';
begin
   sCmd := '"'+ANY_EXE_PATH+'" "'+ANY_EXE_PARAM+'"';

   ExecAsDifferentUser('Administrator',
                       ......
                       ......,
                       sCmd,
                       recProcessInfo);


...
Рейтинг: 0 / 0
16.07.2019, 19:51
    #39838052
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
Кроик Семён,

А если на клиентской машине нет пользователя "Administrator"?
...
Рейтинг: 0 / 0
16.07.2019, 19:53
    #39838053
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
Вот тут пример через ShellExecute (правда на сях).
...
Рейтинг: 0 / 0
16.07.2019, 21:01
    #39838072
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
А на сях Win API отличается?
...
Рейтинг: 0 / 0
16.07.2019, 21:18
    #39838077
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
GatorА на сях Win API отличается?

Винапи нет, но синтаксис отличается, а уровень вопроса вызывает сомнения в способности в нём разобраться.
...
Рейтинг: 0 / 0
16.07.2019, 21:26
    #39838080
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
alekcvp,

Ну это эму надо книжки почитать и разобраться в именовании типов данных и структурах.
Короче, пусть он идёт лесом. 😃
...
Рейтинг: 0 / 0
16.07.2019, 22:23
    #39838089
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
yemets63,

можно в инсталлятор твоего программного комплекса воткнуть специальный сервис, который будет иметь высокие права, а другие программы будут к этому сервису обращаться с просьбой "запусти вот это приложение со своими (тоже высокими) правами, или сразу - "запиши в эту ветку HKLM такое-то значение". Этакая штатная дыра в безопасности. :).
...
Рейтинг: 0 / 0
16.07.2019, 22:46
    #39838091
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программно запустить exe файл с правами администратора
ёёёёёyemets63,

а другие программы будут к этому сервису обращаться с просьбой "запусти вот это приложение со своими (тоже высокими) правами

Петя и Валера будут в восторге!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / программно запустить exe файл с правами администратора / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]