Не обходите, используйте каталог «Данные приложения».
Program Files предназначен для хранения файлов, которые не изменяются во время работы приложения. Хранящиеся там файлы следует изменять только во время установки/обновления.
Файлы, подлежащие изменению во время работы приложения (профили, настройки и т. д.), должны храниться в каталоге «Данные приложения» в папке пользователя.
Чтобы получить путь, используйте передачу функции SHGetFolderPath:
CSIDL_APPDATA
- для получения каталога «Данные приложения» текущего пользователя
CSIDL_COMMON_APPDATA
— для получения каталога «Данные приложения» для всех пользователей
(и в конечном итоге) CSIDL_LOCAL_APPDATA
— для получения каталога «Локальные данные приложения» текущего пользователя, предназначенного для хранения только определенной информации на локальную машину, которую нельзя переместить на другие машины, в отличие от «Данных приложений» (также называемых «Перемещаемыми данными приложений»), где файлы можно свободно перемещать с машины на машину (т. е. вы можете сохранить их во время переустановки ОС).
Если вашему приложению действительно нужно изменить каталог Program Files, то вам следует спросить разрешения у пользователя. Вы можете дать вашему приложению специальный манифест, чтобы оно пыталось получить права администратора при каждом запуске. Вы также можете получить привилегии на лету.
Если вы пишете конкретное приложение, которое почти не мешает работе ОС, то вы можете создать сервис (демон). Каждый раз, когда служба запускается, она получает привилегии, данные при регистрации службы. Дополнительные сведения см. в разделе "DLL, Processes, and Threads -> Services" на MSDN< /а>
// ИЗМЕНИТЬ
Вы также можете легко создать сервис в .NET (наиболее подходит C#). Сервисное приложение может взаимодействовать с клиентским приложением, написанным на другом языке. Но для регистрации сервиса вам потребуются права администратора. С таким приложением вы должны учитывать все вопросы безопасности.
person
adf88
schedule
03.07.2010