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

Assembler, Basic, Pascal/Delphi, Perl, PHP, JavaScript, HTML и т.д. Вопросы и помощь.

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

Непрочитанное сообщение Laplandia » 19 окт 2012, 05:17:54

йоу!
а тут есть программеры?
залип я тут, хоть и позновательно. и все же:

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

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

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

ps. =) не особо надеюсь на помощь, но может и у нас тут программари есть.
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

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

John
Хранитель
Хранитель
 
Сообщения: 1646
Зарегистрирован: 31 окт 2006, 11:46:39
Пол: Мужской

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

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



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

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

Непрочитанное сообщение John » 22 окт 2012, 07:57:51

там вложенный файл-то читал uac.zip, внутри описание и примеры использования в самих исходника программы, правда на делфях, но это не суть важно, синтаксис немного другой просто
John
Хранитель
Хранитель
 
Сообщения: 1646
Зарегистрирован: 31 окт 2006, 11:46:39
Пол: Мужской

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

Непрочитанное сообщение Laplandia » 22 окт 2012, 12:20:05

John писал(а):там вложенный файл-то читал uac.zip, внутри описание и примеры использования в самих исходника программы, правда на делфях, но это не суть важно, синтаксис немного другой просто


да файл прочитал поверхностно, еще почитаю, может найду. спасибо. но похоже метод с перезапуском потока оказывается не таким уж страшным. =) для юзера менее 1 сек подождать выходит.
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

Непрочитанное сообщение Laplandia » 24 окт 2012, 00:02:43

сделал в итоге с перезапуском. все красиво. где нужно - винда сама спрашивает разрешения. так и нужно было.
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

Непрочитанное сообщение Laplandia » 26 окт 2012, 00:20:12

прочитал тот самый uac.zip - все что подходит более-менее к моей задаче в итоге скатывается к "вербу" runas (не путать с файлом runas.exe). чтиво было познавательным, за что, уважаемый John, спасибо и уважуха, но увы было более хитрожопо под мою задачу. перезапуск самого себя с сохранением параметров визуально происходит совершенно незаметно для юзера. главное просто сделать это до появления визуальной части. =) еще раз спасибо!
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

Непрочитанное сообщение Anri » 26 окт 2012, 11:36:45

Код: Выделить всё
int iThrPr = GetThreadPriority(GetCurrentThread());
//GetPriorityClass(...) -- само собой не забываем
SetThreadPriority(iThrPr);


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

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской

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

Непрочитанное сообщение Laplandia » 26 окт 2012, 14:00:40

Anri писал(а):
Код: Выделить всё
int iThrPr = GetThreadPriority(GetCurrentThread());
//GetPriorityClass(...) -- само собой не забываем
SetThreadPriority(iThrPr);


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


так не пробовал. спасибо! на досуге попробую.
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

Непрочитанное сообщение Anri » 26 окт 2012, 18:07:40

но я точно помню, что ещё на 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 для неё, как из пушки по воробьям...
Давай с тобой поговорим, прости, не знаю, как зовут.
Но открывается другим, все то, что близким берегут.
Ты скажешь: "Все наоборот, согласно логике вещей",
Но это редкий поворот, а, может, нет его вообще.

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской

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

Непрочитанное сообщение Laplandia » 27 окт 2012, 15:22:55

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

C# хорошо канеш, и powershell. только проект-динозавр, овер 10 лет ему, на visual c++ 6. =)
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

Непрочитанное сообщение Laplandia » 27 окт 2012, 15:24:08

а 8ка во всю лежит на торрентах, я под ней уже тестирую.
Laplandia
Бывалый
Бывалый
 
Сообщения: 357
Зарегистрирован: 07 сен 2011, 15:00:18
Пол: Мужской
Имя: sfx

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

Непрочитанное сообщение Anri » 29 окт 2012, 19:57:32

Laplandia писал(а):а 8ка во всю лежит на торрентах, я под ней уже тестирую.

будь ласка, швырни в меня линкой в приватку
Давай с тобой поговорим, прости, не знаю, как зовут.
Но открывается другим, все то, что близким берегут.
Ты скажешь: "Все наоборот, согласно логике вещей",
Но это редкий поворот, а, может, нет его вообще.

(с) О.Митяев
Anri
Магистр
Магистр
 
Сообщения: 2137
Зарегистрирован: 05 июл 2006, 23:30:06
Откуда: Frankfurt am Main, Germany
Пол: Мужской


Вернуться в Программирование

Кто сейчас на форуме

Зарегистрированные пользователи: Bing [Bot], DotBot [Crawler], Google [Bot], Petal [Bot], Trendiction [Бот]

cron