Показать сообщение отдельно
  #6  
Старый 14.04.2017, 19:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Alegun
Как раз, понятно - с админскими правами что-то к чему-то обращается и за это время успевает проблемная часть кода выполниться, а без прав "что-то к чему-то" быстро пролетает и обращение идёт к несуществующему ещё объекту

Скорее даже просто не проверяется результат вызова системной функции, которая без админских прав возвращает Nil. Ну и код просто тупо обращается к возвращаемому объекту, а там нет нифига.

Варианты.
1. Запростить права админа через манифест. Тогда программа всегда будет работать под админом.
2. Запрашивать права только при вызове соотв. функции, если не дали - не выполнять соотв. действие (это если кроме этого действия программа еще что-то полезное делает). Кстати, примерно так работает Total Commander. Когда надо копировать из/в защищенную папку, он запрашивает права админа, но только для этой операции.
3. Ну, перед обращением к подобным объектам проверять, что они <>Nil и если это не так, то выдавать соотв. сообщение с просьбой перезапустить с правами админа.
Ответить с цитированием