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

Вниз

Как получить повышенные привилегии в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.107 c
3-1239500260
andirock2112
2009-04-12 05:37
2010.08.27
Связь многие ко многим


2-1274676640
viktooor
2010-05-24 08:50
2010.08.27
Запрет редактирование в Grid


2-1268397398
timekiller
2010-03-12 15:36
2010.08.27
Интерактивный генератор текстов


2-1271927418
b86
2010-04-22 13:10
2010.08.27
перевод xls таблицы в stringgrid


2-1266247298
AndrewGm
2010-02-15 18:21
2010.08.27
Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский