Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Как получить повышенные привилегии в Vista?   Найти похожие ветки 

 
@!!ex ©   (2010-04-23 19:25) [0]

Есть KeyHook. Он норм работает.
Но не работает с IExplorer, т.к. у того привилегии выше.
Как получить достаточные привилегии для нормальноый работы хука?

Если я делаю авторан с правами админа, то прога вообще не запускается и уходит в список "отмененной автозагрузки".
Как бы запустить с повышенными правами? Пользователь вполне может нажать Yes на UAC, но я не понял как UAC вызвать...


 
Конформист   (2010-04-23 19:28) [1]


>
> @!!ex ©   (23.04.10 19:25)
>
> Есть KeyHook. Он норм работает.
> Но не работает с IExplorer, т.к. у того привилегии выше.
>
> Как получить достаточные привилегии для нормальноый работы
> хука?
>
> Если я делаю авторан с правами админа, то прога вообще не
> запускается и уходит в список "отмененной автозагрузки".
>
> Как бы запустить с повышенными правами? Пользователь вполне
> может нажать Yes на UAC, но я не понял как UAC вызвать..


Купить подпись за 399$ и подписать ПО. Вставить в манифест требование админа.


 
@!!ex ©   (2010-04-23 19:33) [2]

> [1] Конформист   (23.04.10 19:28)
> Купить подпись за 399$ и подписать ПО.

Нее. Утилитка фриварная, денегь на нее тратить точно не буду...


> [1] Конформист   (23.04.10 19:28)
> Вставить в манифест требование админа.

А можно поподробнее??

Я нашел как править манифест:
<security>
 <requestedprivileges>
   <requestedexecutionlevel level="requireAdministrator">
 </requestedprivileges>
</security>

Но как его в приложение свое добавиьт - не понял. :(


 
Игорь ©   (2010-04-23 19:39) [3]


> Но как его в приложение свое добавиьт - не понял. :(


Программа PE Explorer-> Application Manifest Wizard


 
Конформист   (2010-04-23 19:43) [4]


> @!!ex ©   (23.04.10 19:33) [2]
>
> > [1] Конформист   (23.04.10 19:28)
> > Купить подпись за 399$ и подписать ПО.
>
> Нее. Утилитка фриварная, денегь на нее тратить точно не
> буду...


Без подписи с правами админа как сервис или с автозагрузки она на стартанёт при включенном UAC.


> А можно поподробнее??


http://ruminatedrumblings.blogspot.com/2008/03/vista-uac-manifest.html
и убрать все ссылки в программе на модуль xpmanifest, так как он заменяет твой манифест

Только с учетом вышесказанного без подписи взлетит только при ручном запуске и будет выдавать запрос на повышение привилегий каждый раз.

Как это обойти - добавить программу в политику доверяемых программ
http://blogs.techrepublic.com.com/window-on-windows/?p=635
отключить UAC


 
Конформист   (2010-04-23 19:46) [5]

Еще как вариант запросить логин-пароль админа, сохранить их где-то (зашифрованными) и повышать привилегию той нити которая устанавливает хук.

Если уитилита не слишком популярна(менее 100000 установок) то секретность вполне удовлитворительна.


 
Игорь ©   (2010-04-23 19:59) [6]


> Но не работает с IExplorer, т.к. у того привилегии выше.


Вообще то по идее у IExplorer привилегии ниже(LOW_INTEGRITY), а у админа выше(HIGH_INTEGRITY)


 
@!!ex ©   (2010-04-23 20:45) [7]

> [4] Конформист   (23.04.10 19:43)
> Без подписи с правами админа как сервис или с автозагрузки
> она на стартанёт при включенном UAC.

А если сделать прогу, которая будет стартовать с обычными правами и пытаться запустить утилиту с правами админа?
Это прокатит?


 
DVM ©   (2010-04-23 21:05) [8]


> @!!ex ©   (23.04.10 20:45) [7]

Зачем такой изврат? Такая прога уже есть - проводник называется, есть и консольная утилита RunAs, кажется, но что мешает программе самой запрашивать привилегии. Просто вставь в ресурс манифест, ресурс прилинкуй к программе и всего делов.


 
DVM ©   (2010-04-23 21:07) [9]


> Конформист   (23.04.10 19:43) [4]


> Без подписи с правами админа как сервис или с автозагрузки
> она на стартанёт при включенном UAC.

с автозагрузки нет, а как сервис стартанет как миленькая и без подписи при включенном UAC


 
@!!ex ©   (2010-04-23 21:09) [10]

> [8] DVM ©   (23.04.10 21:05)
> Просто вставь в ресурс манифест, ресурс прилинкуй к программе
> и всего делов.

И авторан не отработает.


 
Конформист   (2010-04-23 21:11) [11]


> @!!ex ©   (23.04.10 20:45) [7]


С автозагрузки, без подписи, нет. Програ должна задетектить интерактивный вход в систему пользователя (для возможности создания окна безопасности UAC, точное название не помню) а потом уже запускать.

Но если ты сам создаёшь токен безопасности CreateProcessWithLogonW LogonUserEx то можешь запускать что хочешь.

Еще проблема может быть что хук устанавливается а приложение с низкими привилегиями не может отправить сообщение процессу с высокими привилегиями.

Тогда вот ChangeWindowMessageFilter


 
DVM ©   (2010-04-23 21:12) [12]


> @!!ex ©   (23.04.10 21:09) [10]


> И авторан не отработает.

Пусть ее планировщик запускает с нужными правами при входе в систему.


 
@!!ex ©   (2010-04-23 21:13) [13]

> [12] DVM ©   (23.04.10 21:12)

А как инсталятору сказать, чтобы он добавил задание планировщику?? Я вообще не в курсе, честно говоря..


 
DVM ©   (2010-04-23 21:14) [14]


> @!!ex ©   (23.04.10 21:13) [13]

я никогда не делал, но у планировщика целый API есть, я даже где то для делфи находил класс-обертку.


 
Конформист   (2010-04-23 21:17) [15]


> DVM ©   (23.04.10 21:07) [9]
> с автозагрузки нет, а как сервис стартанет как миленькая
> и без подписи при включенном UAC


С каким SP  тестировали?


 
DVM ©   (2010-04-23 21:20) [16]


> Конформист   (23.04.10 21:17) [15]

Windows 7 со всеми обновлениями.
Не одна, а даже несколько моих программ прекрасно работают как сервисы безо всяких подписей. Правами сервисы не обделены.


 
@!!ex ©   (2010-04-23 21:22) [17]

> [16] DVM ©   (23.04.10 21:20)

А как сервис инсталировать? Обычный инсталлятор не подойдет, как я понимаю...


 
DVM ©   (2010-04-23 21:24) [18]


> @!!ex ©   (23.04.10 21:22) [17]

подойдет любой, у InnoSetup Это так делается для сервисов на делфи писанных:

[Files]
Source: ..\release\myserv.exe; DestDir: {app}; Flags: ignoreversion

[Run]
Filename: {app}\myserv.exe; Parameters: -install -silent; Flags: runhidden


 
@!!ex ©   (2010-04-23 21:26) [19]

> [18] DVM ©   (23.04.10 21:24)

должен быть запущен под админом естественно?
а как сказать Inno, чтобы он требовал права админа при запуске?


 
DVM ©   (2010-04-23 21:27) [20]


> @!!ex ©   (23.04.10 21:26) [19]


> а как сказать Inno, чтобы он требовал права админа при запуске?

Для этого ничего делать не надо, все есть уже.


 
Конформист   (2010-04-23 21:27) [21]


> DVM ©   (23.04.10 21:20) [16]
>
>
> > Конформист   (23.04.10 21:17) [15]
>
> Windows 7 со всеми обновлениями.


Под Vista Sp1 были проблемы без подписи.


 
@!!ex ©   (2010-04-23 21:29) [22]

> [21] Конформист   (23.04.10 21:27)
> Под Vista Sp1 были проблемы без подписи.

Какие?


 
DVM ©   (2010-04-23 21:31) [23]


> Под Vista Sp1 были проблемы без подписи.
>
>

Можно считать ошибкой, т.к. SP2 это убрал.


 
@!!ex ©   (2010-04-23 23:24) [24]

Так, вопрос, а сервису нужно манифест прикручивать, или он по дефолту имеет дофига прав?


 
DVM ©   (2010-04-24 00:09) [25]


>  а сервису нужно манифест прикручивать

не нужно


 
Anatoly Podgoretsky ©   (2010-04-24 08:36) [26]

> @!!ex  (23.04.2010 23:24:24)  [24]

Он по дефолту имее права SYSTEM, а это выше Administrator


 
Anatoly Podgoretsky ©   (2010-04-24 08:36) [27]

> @!!ex  (23.04.2010 23:24:24)  [24]

Повышение прав нужно только для установки сервиса.


 
Anatoly Podgoretsky ©   (2010-04-24 08:37) [28]

> DVM  (24.04.2010 00:09:25)  [25]

Смешно было бы если надо. Запрос неизветно к кому, в системе еще никто не залогинен, рабочего стола нет.


 
Eraser ©   (2010-04-24 14:54) [29]

> [21] Конформист   (23.04.10 21:27)

не вводи народ в заблуждение.


 
Игорь ©   (2010-04-30 10:29) [30]


> @!!ex ©


Под Vista и выше если нет прав администратора вызывает окно запроса прав, если изначально хочешь что бы требовал администратора то надо наверно прикручивать манифест

uses ShellAPI;

var
 SEI: TShellExecuteInfo;
begin
 ZeroMemory(@SEI, SizeOf(SEI));
 SEI.cbSize := SizeOf(TShellExecuteInfo);
 SEI.Wnd := Handle;
 SEI.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
 SEI.lpVerb := PChar("runas");
 SEI.lpFile := PChar("FileName");
 SEI.nShow := SW_SHOWNORMAL;
 if not ShellExecuteEx(@SEI) then
   ShowMessage(SysErrorMessage(GetLastError));



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.1 c
15-1272703696
Pavia
2010-05-01 12:48
2010.08.27
numerical recipes


2-1272286875
Вик
2010-04-26 17:01
2010.08.27
Invalid floating point operation


15-1273962210
[true]TRIx
2010-05-16 02:23
2010.08.27
Прошу потестить портал.


2-1272244377
Ваше имя
2010-04-26 05:12
2010.08.27
Нужен максимально быстрый и оптимизированый код чт/записи в файл


2-1273504909
Тим
2010-05-10 19:21
2010.08.27
сортировка в stringlist