Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.05.20;
Скачать: CL | DM;

Вниз

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

 
Anthony68   (2016-05-01 19:31) [0]

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

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


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

по хорошему прога не должна писать туда куда ей запрещено, но если очень надо... то именно на этот момент, с запросом логина-пароля если потребуется (при "элевации" не нужно), и тут же назад в "безопасный режим"
http://delphimaster.net/view/4-1357723591/
тока фильтруй, там глупостей просто кучу насоветовали.


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

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


 
Inovet ©   (2016-05-02 16:14) [3]

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

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


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

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


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

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


 
Dimka Maslov ©   (2016-05-02 18:39) [6]


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


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


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

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


 
Inovet ©   (2016-05-02 21:22) [8]

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

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


 
Inovet ©   (2016-05-02 21:25) [9]

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


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


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

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


 
Dimka Maslov ©   (2016-05-03 09:01) [11]


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


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


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


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

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


 
NoUser ©   (2016-05-03 17:37) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2018.05.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.005 c
1-1271852224
Focus77
2010-04-21 16:17
2018.05.20
Запрет получения фокуса программой


2-1463295307
lewka
2016-05-15 09:55
2018.05.20
Работа с компонентам Chromium


2-1462044561
aka
2016-04-30 22:29
2018.05.20
свой object inspector


2-1462800607
dmk
2016-05-09 16:30
2018.05.20
Угловые квадранты


2-1462120264
Anthony68
2016-05-01 19:31
2018.05.20
Как сделать чтобы написанная мной программа запускалась от имени