Приложение запускается только если вы запускаете от имени администратора?

Редактировать: насколько я слышал, эта проблема возникает только в Windows 7 и Vista.

У меня есть очень простое приложение, разработанное с использованием внешней графической библиотеки. Если я установлю это приложение в каталог программных файлов и запущу его, оно немедленно выйдет из строя, но нормально работает с точно такими же файлами. Я понял, что это потому, что вам нужно запустить приложение от имени администратора, чтобы оно работало.

Я признателен, если это проблема, непосредственно связанная с графическим движком, который я использую, но на самом деле я так не думаю (но я ничего не знаю). Может кто-нибудь мне помочь?

Изменить для получения более подробной информации:
Исполняемый файл приложения и файлы, необходимые для его запуска, устанавливаются в каталог программы по умолчанию — для меня это C:\Program Files (x86). Если вы попытаетесь запустить его, не нажимая кнопку «Запуск от имени администратора», он просто зависнет и скажет: «Приложение перестало работать. Windows ищет решение проблемы…» В основном мой вопрос: как я могу это сделать? значит запускать от имени администратора не нужно?


person pighead10    schedule 02.06.2011    source источник
comment
Так была ли библиотека загружена администратором и помещена в каталог, который другие пользователи не видят? Вы получаете сообщения об ошибках?   -  person Bo Persson    schedule 02.06.2011
comment
Исполняемый файл приложения и файлы, необходимые для его запуска, устанавливаются в каталог программы по умолчанию — для меня это C:\Program Files (x86). Если вы попытаетесь запустить с помощью, не нажимая «Запуск от имени администратора», он просто зависнет и скажет, что приложение перестало работать. Windows ищет решение проблемы ... Мой вопрос в основном в том, как я могу сделать так, чтобы запуск от имени администратора не требовался.   -  person pighead10    schedule 02.06.2011
comment
Он использует DLL? Правильно ли они зарегистрированы. Вы уверены, что записи реестра для dll не указывают на личный каталог администратора?   -  person StevieG    schedule 02.06.2011


Ответы (3)


Когда программа не может выполнить операцию, она (операция) должна завершиться корректно. Я предполагаю, что ваше приложение пытается сделать что-то, что оно не может сделать как обычный пользователь, а затем не может проверить код возврата, а затем происходит сбой. Вам нужно определить, что делает ваша программа, чего она не должна делать как обычный пользователь. Например (внезапно):

  • Записать файл в Program Files (x86)
  • Пишите в ХКЛМ
person Blazes    schedule 02.06.2011
comment
Я думаю, что записи HKLM прозрачно перенаправляются для обычного пользователя. - person Tamás Szelei; 02.06.2011
comment
Да, моя программа записывает в файл в каталоге программных файлов. Спасибо - person pighead10; 02.06.2011
comment
Вы должны писать в каталог ProgramData. например используйте SHGetFolderPath и CSIDL_LOCAL_APPDATA. Насчет HKLM пишет не уверен, но думаю прозрачное перенаправление для х86 раздела реестра... - person Blazes; 02.06.2011

(Без подробностей) Проблема, скорее всего, связана с тем, что ваша программа пытается записать в каталог, а затем исключает создание/модификацию файла, чтобы действительно иметь эффект. UAC не позволяет приложениям записывать каталоги Program Files без прав администратора. Решение состоит в том, чтобы изменить дизайн вашего приложения, чтобы не полагаться на такое поведение, или хранить рассматриваемые файлы в одном из предполагаемых мест (папки AppData и т. д.).

person Tamás Szelei    schedule 02.06.2011

Если щелкнуть правой кнопкой мыши EXE и перейти к Properties -> Compatibility, есть несколько вариантов, которые могут помочь. Вы можете попробовать запустить приложение в режиме совместимости с предыдущей версией Windows или, если это не сработает, по крайней мере, отметьте EXE для запуска от имени администратора по умолчанию.

person PhilMY    schedule 02.06.2011