Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обойти Win7 UserAccountControl, Запись файла 
V
    Опции темы
loneybibi
  Дата 20.6.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Здравствуйте, уважаемые. smile

Пишу Updater для своей программы, вроде все получилось, но заметил одну очень большую проблему. В Window 7 есть такая штука как User Account Control. Проблема в том что он моему Updater'у не дает записать новый файл вместо старого. Если его отключить то все нормально. Думаю кто то уже сталкивался с такой проблемой, подскажите что делать, как обойти эту систему контроля ?

Нашел в описании UAC что нужно указать в манифест-ресурсе уровень доступа программы: asInvoker, highestAvailable или requireAdministrator. Программа будет иметь соответствующие права уже при запуске. Но как это сделать в Qt ?

Заранее благодарен за, Ваши ответы! smile 

Это сообщение отредактировал(а) loneybibi - 20.6.2011, 13:57


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
borisbn
Дата 20.6.2011, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(loneybibi @  20.6.2011,  13:44 Найти цитируемый пост)
Но как это сделать в Qt ?

Никак. В наборе Си++ классов, объединённых в библиотеку под названием Qt, нет понятия манифеста.
Если ты компилишь MSVC, то в каталоге Release создаётся такой файл: Имя_программы.manifest
Отредактируй его и распространяй вместе с программой.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
loneybibi
Дата 20.6.2011, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(borisbn @ 20.6.2011,  13:09)
Цитата(loneybibi @  20.6.2011,  13:44 Найти цитируемый пост)
Но как это сделать в Qt ?

Никак. В наборе Си++ классов, объединённых в библиотеку под названием Qt, нет понятия манифеста.
Если ты компилишь MSVC, то в каталоге Release создаётся такой файл: Имя_программы.manifest
Отредактируй его и распространяй вместе с программой.

А другие методы кроме манифеста обойти или получить права UAC на запись? Или можно как то создать манифест для собранного приложения на mingw ?


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
borisbn
Дата 20.6.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Вот такой манифест создаёт у меня MSVC для всех проектов (Qt-шных в том числе)
Цитата

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
loneybibi
Дата 20.6.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(borisbn @ 20.6.2011,  13:24)
Вот такой манифест создаёт у меня MSVC для всех проектов (Qt-шных в том числе)
Цитата

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

Ну я так понимаю что он не просто должен рядом лежать с приложение а как то "прикручен" к нему. Если я соберу MinGw приложение и положу манифест рядом то толку ноль!? Я просто первый раз с этим сталкиваюсь.


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
ecspertiza
Дата 20.6.2011, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



я могу ошибаться ,но манифесты работают только с Visual Studio . Просто не пиши ничего в Program Files ,а пиши в пользовательскую папку, туда права точно будут.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
loneybibi
Дата 20.6.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(ecspertiza @ 20.6.2011,  14:49)
я могу ошибаться ,но манифесты работают только с Visual Studio . Просто не пиши ничего в Program Files ,а пиши в пользовательскую папку, туда права точно будут.

Да вот в том то и дело что программа устанавливается именно туда. И она качает обновления для себя, но не может их записать.


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
borisbn
Дата 20.6.2011, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(loneybibi @  20.6.2011,  15:35 Найти цитируемый пост)
Ну я так понимаю что он не просто должен рядом лежать с приложение а как то "прикручен" к нему

Цитата отсюда
Цитата

Manifests are typically a section embedded in the application's executable file but may also be an external file


хз. попробуй просто положить рядом

Это сообщение отредактировал(а) borisbn - 20.6.2011, 15:57


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
loneybibi
Дата 20.6.2011, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(borisbn @ 20.6.2011,  14:57)
Цитата(loneybibi @  20.6.2011,  15:35 Найти цитируемый пост)
Ну я так понимаю что он не просто должен рядом лежать с приложение а как то "прикручен" к нему

Цитата отсюда
Цитата

Manifests are typically a section embedded in the application's executable file but may also be an external file


хз. попробуй просто положить рядом

Попробовал.. результата не имеет. На MSDN нашел что то про манифесты и утилиту Mage(UI).exe которая в комплекте с VS и создает эти манифесты.. Попробую это "покурить" ... 

Если кому интересно: http://msdn.microsoft.com/ru-ru/library/acz3y3te.aspx


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
ecspertiza
Дата 20.6.2011, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



а ты качай обновления в Temp, и сделай их в виде инсталяшки с помощью Inno setup например, пущай юзверь сам их ставит smile А после того как скачались обновления естественно вырубай (софт если нужно) и запускаешь инсталяшку smile


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
loneybibi
Дата 20.6.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(ecspertiza @ 20.6.2011,  15:27)
а ты качай обновления в Temp, и сделай их в виде инсталяшки с помощью Inno setup например, пущай юзверь сам их ставит smile А после того как скачались обновления естественно вырубай (софт если нужно) и запускаешь инсталяшку smile

Как вариант smile Но я думаю это слишком усложненный вариант. smile


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
ecspertiza
Дата 20.6.2011, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



я просто одно время колупался с манифестами под MinGW , ничего у меня не вышло, сделал на инсталяшке. Да и для пользователя это вроде как удобно.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
loneybibi
Дата 20.6.2011, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(ecspertiza @ 20.6.2011,  15:34)
я просто одно время колупался с манифестами под MinGW , ничего у меня не вышло, сделал на инсталяшке. Да и для пользователя это вроде как удобно.

Что то с Mingw у меня тоже не выходит! smile Поставил Visual Studio сейчас буду пробовать собрать там с манифестами. Кстати кто то так во время про эти манифесты статью на хабре выкинул. 
http://habrahabr.ru/company/xakep/blog/122272/


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
Любитель
Дата 20.6.2011, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Манифест может быть внешним файлом. Положи рядом с приложением и назове myapp.exe.manifest.


--------------------
PM MAIL ICQ Skype   Вверх
loneybibi
Дата 20.6.2011, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(Любитель @ 20.6.2011,  16:18)
Манифест может быть внешним файлом. Положи рядом с приложением и назове myapp.exe.manifest.

Я понимаю что он внешний файл. Но просто я сначала так рядом положил файл манифеста с приложением собранным на mingw результата не дало, потом собрал приложение на VS2008 с Qt и там компилятор сам создал манифест файл. Положил все манифесты и даже для библиотек, все равно нет результата. Он даже не пытается спросить пользователя разрешить или нет. Потом открыл утилиту mage которая генерирует манифесты. Создал манифесты для всех файлов своего приложения(скомпилированного на VS) с правами доступа Full Trust. Все равно ноль эмоций .. Он даже не хочет выдать диалог с разрешением на права.. 
Я сегодня целый день долблю эту стенку, уже сил нет завтра продолжу... 
Прибил бы того кто придумал эту ........................... :(



--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1263 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.