Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать чтобы написанная мной программа запускалась от имени


Anthony68 ©   (2016-05-01 19:31:00) 

Моя программа, написанная на Delphi XE7 не может работать, если пользователь установил её в С:\,
a на диске D:\ - работает нормально... Я понял, что это получается из-за того, что Windows не даёт ей
права на запись необходимых ей файлов.
Если же запустить от имени администратора - всё начинает работать... Как быть? Можно ли сделать чтобы
программа сразу запускалась от имени администратора, без того, чтобы сам пользователь открывал её
свойства и ставил галочку напротив "Запускать от имени администратора"?

Нашёл на форуме код, который делает это, но ему нужно передать имя и пароль администратора. Но ведь
я же не знаю, какой пароль у пользователя... И вообще, не понимаю, зачем их вводить, если пользователь
и так уже работает как администратор... Объясните пожалуйста, как решать такую задачу?


NoUser   (2016-05-03 17:37:00) [1]

Удалено модератором


Плохиш   (2016-05-03 10:04:00) [2]


> Anthony68   (02.05.16 19:56) [7]
>
> Может и должны, а может и нет? Мне интересно, а почему программа
> должна соблюдать
> эти условные правила Windows?

Потому что она работает под управлением Windows.


Dimka Maslov   (2016-05-03 09:01:00) [3]


> то все её пользователи сочтут, что её место в корзине.


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


Германн   (2016-05-03 00:56:00) [4]


> Anthony68   (02.05.16 19:56) [7]
>
> Может и должны, а может и нет? Мне интересно, а почему программа
> должна соблюдать
> эти условные правила Windows?

Если она их не будет соблюдать, то все её пользователи сочтут, что её место в корзине.


Inovet   (2016-05-02 21:25:00) [5]

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


Inovet   (2016-05-02 21:22:00) [6]

> [7] Anthony68   (02.05.16 19:56)
> Может и должны, а может и нет? Мне интересно, а почему программа
> должна соблюдать
> эти условные правила Windows?

Не хочешь - не соблюдай. Но зачем тогда спрашивать советы.


Anthony68   (2016-05-02 19:56:00) [7]

Может и должны, а может и нет? Мне интересно, а почему программа должна соблюдать
эти условные правила Windows?
Мне не хочется распихивать файла по папкам с такими непонятными названиями, и поэтому сделал, чтобы моя программа хранила все свои рабочие файлы у себя же в папке.
Разве это запрещается? Поясните пожалуйста.
Кстати, замена level="asInvoker" на level="requireAdministrator" заработала!!
Видно я просто что-то неправильно делал при сохранении моего файла в Resource Builder.
Теперь всё работает и в Program Files. Даже не верится что так всё просто оказалось...
Теперь вот не понимаю, почему на подобные моему вопросы на форумах такие сложные
решения этой задачи??...


Dimka Maslov   (2016-05-02 18:39:00) [8]


> много всего по мере работы в разные свои файлы должна записать


Для разных своих файлов существует специальное место, куда писать не возбраняется. Искать надо по ключевым словам CSIDL_COMMON_APPDATA и SHGetSpecialFolderPath. Все свои рабочие файлы приложения должны хранить в этой папке.


Anthony68   (2016-05-02 18:26:00) [9]

Прочёл совет скачать Resource Builder, и отредактировать файл ресурсов ".res" моей программы, заменив в манифесте level="asInvoker" на level="requireAdministrator".
Я сделал точно по этому рецепту, включая и то дополнение, что сам Delphi запустил для компиляции от имени администратора.
Почему это не работает?...


Anthony68   (2016-05-02 18:06:00) [10]

А что значит "хранить настройки в правильном месте"?? А если программа устроена так, что она не только настройки, а много всего по мере работы в разные свои файлы должна записать, а прав не имеет? Как из программы запросить у системы эти права?


Inovet   (2016-05-02 16:14:00) [11]

> [0] Anthony68   (01.05.16 19:31)
> Можно ли сделать чтобы
> программа сразу запускалась от имени администратора

Делать так не надо - лто плохо. Надо настройки хранить в правильном месте.


Игорь Шевченко   (2016-05-02 08:57:00) [12]

Надо переписать программу с учетом требований Windows


sniknik   (2016-05-02 00:51:00) [13]

по хорошему прога не должна писать туда куда ей запрещено, но если очень надо... то именно на этот момент, с запросом логина-пароля если потребуется (при "элевации" не нужно), и тут же назад в "безопасный режим"
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1357723591&n=5
тока фильтруй, там глупостей просто кучу насоветовали.


Наверх

Титульная страница Поиск, карта сайта Написать письмо