Страница 1 из 1

VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 19 окт 2012, 05:17:54
Laplandia
йоу!
а тут есть программеры?
залип я тут, хоть и позновательно. и все же:

нужно запустить .exe (который установит SQL Server, создаст БД, привяжет ее к другой программе) через runonce и получить/запросить (по возможности честными, с запросами UAC'а методами) права админа.

может кто знает спосою для принудительного запроса прав админа? метод явного запроса через манифест не подходит, ибо большинство возможностей софтины должно быть доступно без админских прав. имхо, перезапускаца через shellexecute+runas это божественный изврат. =\ можно канеш временно положить правленный .manifest рядом с .exe, но тож не катит ибо .exe часто будет находица на dvd-носителе (ридонли). есть еще способ - положить в HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Runonce, но мне так кажется, что SQL Server (который в итоге должон установиться и создать БД) охренеет.

пните в нужную сторону.

ps. =) не особо надеюсь на помощь, но может и у нас тут программари есть.

Re: vc++ runonce и права админа

Непрочитанное сообщениеДобавлено: 19 окт 2012, 11:25:14
John

Re: vc++ runonce и права админа

Непрочитанное сообщениеДобавлено: 19 окт 2012, 15:09:34
Laplandia


спасибо. оно канеш оно. только как я писал выше вариант с манифестом не катит. =\
мне бы что-то вродеn такого метода нужно, чтобы на лету, уже из запущенного процесса повысить его права, либо запустить .exe с уже повышенными (если возможно для конкретного юзера) правами строчкой в runonce. т.е. нужна как-то заставить .exe запросить права админа, без использования манифеста. т.к. .exe выполняет туеву хучу задач и 98% из них не должны требовать прав админа, а вот эти 2% - требуют их безальтернативно. проверить и сообщить юзеру, что мол нужно для выполнения действия конкретного запустить .exe с правами администратора элементарно. у меня же задача другая. .exe запускается под админом, делает действия, потом предупреждает о необходимости перезагрузки. после чего из runonce .exe необходимо СНОВА запустить (с определенными параметрами) и вновь запросить привелегии администратора. так вот единственное, что мне пока приходит в голову - издевательский перезапуск .exe через shellexecuteex с параметром runas (тоже работать будет в теории - пробовать буду завтра), а это безусловно изврат. =( самое обидное, что микрософт как я понимаю ничего кроме манифеста на этот счет не придумали. однако shellexecuteexe имеет параметр со значением runas, который запрашивает права админа - т.е. winapi это как-то умеет! почему бы не добавить эту же функцию в запуск например из командной строки/строчки реестра - я откровенно не понимаю microsoft. слышал, что можно как-то поизвращаться и вообще обходить uac и т.п., но увы это уже скорее к хакерским методам относится, кои практически запрещены в нашем проекте (и так без электронной подписи каждый второй антивирус ругаеца). =\

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 22 окт 2012, 07:57:51
John
там вложенный файл-то читал uac.zip, внутри описание и примеры использования в самих исходника программы, правда на делфях, но это не суть важно, синтаксис немного другой просто

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 22 окт 2012, 12:20:05
Laplandia
John писал(а):там вложенный файл-то читал uac.zip, внутри описание и примеры использования в самих исходника программы, правда на делфях, но это не суть важно, синтаксис немного другой просто


да файл прочитал поверхностно, еще почитаю, может найду. спасибо. но похоже метод с перезапуском потока оказывается не таким уж страшным. =) для юзера менее 1 сек подождать выходит.

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 24 окт 2012, 00:02:43
Laplandia
сделал в итоге с перезапуском. все красиво. где нужно - винда сама спрашивает разрешения. так и нужно было.

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 26 окт 2012, 00:20:12
Laplandia
прочитал тот самый uac.zip - все что подходит более-менее к моей задаче в итоге скатывается к "вербу" runas (не путать с файлом runas.exe). чтиво было познавательным, за что, уважаемый John, спасибо и уважуха, но увы было более хитрожопо под мою задачу. перезапуск самого себя с сохранением параметров визуально происходит совершенно незаметно для юзера. главное просто сделать это до появления визуальной части. =) еще раз спасибо!

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 26 окт 2012, 11:36:45
Anri
Код: Выделить всё
int iThrPr = GetThreadPriority(GetCurrentThread());
//GetPriorityClass(...) -- само собой не забываем
SetThreadPriority(iThrPr);


так пробовал? я на сях уже стопицот лет не бодался.
А мне кажется, что ни чего вообще не надо дополнительного делать, просто запустить внешний процесс, который сама ОСь и опросит на предмет уникальности прав.

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 26 окт 2012, 14:00:40
Laplandia
Anri писал(а):
Код: Выделить всё
int iThrPr = GetThreadPriority(GetCurrentThread());
//GetPriorityClass(...) -- само собой не забываем
SetThreadPriority(iThrPr);


так пробовал? я на сях уже стопицот лет не бодался.
А мне кажется, что ни чего вообще не надо дополнительного делать, просто запустить внешний процесс, который сама ОСь и опросит на предмет уникальности прав.


так не пробовал. спасибо! на досуге попробую.

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 26 окт 2012, 18:07:40
Anri
но я точно помню, что ещё на 200 повышал/понижал приоритеты потокам и процессам без особых проблем. Ты в SDK/MSDN-е пробовал вообще искать эту хрень?
Тут же решений должно быть как г*вна. Вплоть до запускания сервиса, который будет запускай чего душе угодно. Опять же всевозможные выёжывания в области PowerShell (2?), до создания/самоуничтожения системных задач.. Да навыдумывать выходов из ситуации в современной (прошу прощения к вынь-рот/она же WinRT/она же Windows 8 это отношения пока не имеет, посольку её я ещё сексуально не совращал кстати ни у кого нету на опробацию? :-X ).
Главное, когда сталкиваешся с подобными задачами оставаться русским программистом, а не уподобляться ляцким западным коллегам, которые долбят проблему рогами, аки бык вороты...
У нас поговорок стописот тысяч и главна, в данном случае: умный в гору не пойдёт, умный гору обойдёт.

а вааще читайте больше msdn и stackoverflow.com... очень помогает и рекоммендую обращать внимание на фамилии авторов ;)

знаю, что манифест чем-то не понравился, но всё-же:
http://msdn.microsoft.com/en-us/library ... 56929.aspx

я на С# без него вааще не могу, а с ним так приятно... либы со встроенными кусками кода, шаблонами запросов, html-ями и js-ами... да куча приятностей. Можно упаковывать цельные XAML-ы и использовать их потом для построения GUI в приложениях, ни сном ни духом о XAML не знающих...

Просто вынь в дос это уже очень не DOS и давно не стоит думать, что пишешь программу, ты пишешь приложение к программе, точнее к куче программ, программируя на самом высшем уровне. И задача, что ты описал ни коим образом не должна решаться на таком низком уровне, что ты изложил. Это - over-qualify для неё, как из пушки по воробьям...

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 27 окт 2012, 15:22:55
Laplandia
возможно не самый корректный метод, но только он мне помог из возможных. причом он не оказался совсем уж чудовищным, как я предполагал изначально. впрочем, на досуге попробую еще - может что-то поинтереснее пройдет.

C# хорошо канеш, и powershell. только проект-динозавр, овер 10 лет ему, на visual c++ 6. =)

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 27 окт 2012, 15:24:08
Laplandia
а 8ка во всю лежит на торрентах, я под ней уже тестирую.

Re: VC++ RunOnce и права админа

Непрочитанное сообщениеДобавлено: 29 окт 2012, 19:57:32
Anri
Laplandia писал(а):а 8ка во всю лежит на торрентах, я под ней уже тестирую.

будь ласка, швырни в меня линкой в приватку