Как настроить права запуска приложения в Windows, C++?
Имеется приложение, написанное на Qt. В Inno Setup сделал для него установочник, в настройках запретил изменять путь установки - устанавливается в Program Files. Приложение создает файлы в рабочем каталоге, из рабочего каталога запускает другие утилиты, которые тоже создают в рабочем каталоге новые файлы...
Так вот, в Windows 7 приложение прекрасно работает, а в Windows 8 и 10 оно не может создать ни директории, ни файлы. Запуск от администратора особо проблему не решает - запущенные приложением утилиты по прежнему не могут производить запись на диске.
Я как-то не силен с этими, уж простите, неадекватными майкрософтовскими заскоками по поводу безопасности... подскажите что нужно сделать, чтобы приложение имело полные права на запись и удаление файлов в своей директории?
По-моему, проблема с основным приложением должна решиться на этапе компиляции - нужно лишь добавить какой-то конфиг в RC-файл (буду благодарен за ссылки на информацию, если это так). Но как быть с утилитами, которые запускаются приложением? Используемые утилиты - это Qt-шные qmake, mingw-make, g++ и т.д. К слову, Qt устанавливается на системный диск и преспокойно создает там папки проектов, преспокойно запускает сторонние компиляторы, которые в свою очередь преспокойно создают новые файлы и каталоги. Как добиться аналогичного функционала?
Подозреваю что вам нужно просто воткнуть в приложение правильный манифест. Как писать манифет - ищите на msdn.com, как воткнуть его в вашу программу ищите на qt.io, там это точно есть, но ссылку сходу не вспомню.
Да, действительно. Manifest немного помог - у приложения появилась иконка "Запуск от администратора".
Но все же мне непонятно как работает QtCreator - у него нет потребности в запуске от администратора... при этом он вытворяет на системном диске что ему захочется :)
Александр Права на C:\Qt и C:\Windows наверняка у вас различаются. Когда вы устанавливали Qt, инсталлер наверняка запускался с правами админа и получил возможность создать папку на системном диске, и дал этой папке права на доступ обычному пользователю. Хотя, надо сказать что на 7-ке я у себя могу создать папку на системном диске без каких-либо проблем. Вот создать подпапку в Program Files или Windows уже потребует повышения привелегий.