Я устанавливаю свое приложение в соответствии с каталогом "Program Files". И я устанавливаю данные, в соответствии с каталогом "ProgramData":
Среда. SpecialFolder. CommonApplicationData
В programData я создал папку для сохранения данных. Пример:
C:\ProgramData\MyApp\MyData\here I имейте файлы и папки
Под XP все хорошо работает. Но не в соответствии с Vista или ОС W7.
Я могу считать файлы в этом каталоге, но я не могу записать файлы, я не могу создать новые файлы и т.д. Пользователь зарегистрирован как Администратор.
Где я могу хранить данные без ограничений? Я должен хранить данные в папке, видимой для всех пользователей
ОТРЕДАКТИРОВАННЫЙ:
У меня есть этот код в моем app.manifest файле:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- Opciones del manifiesto de Control de cuentas de usuario
Si desea cambiar el nivel de Control de cuentas de usuario de Windows, reemplace el
nodo requestedExecutionLevel por alguno de los siguientes.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Si desea utilizar la virtualización de archivos y del Registro para la compatibilidad
con versiones anteriores, elimine el nodo requestedExecutionLevel.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
Это связано с UAC. Ваша программа запускается от имени администратора для создания / удаления файлов / папок в этой SpecialFolder.
Простое для понимания объяснение различных мест, где можно хранить программные данные, можно найти здесь:
Что касается ProgramData, он говорит:
FOLDERID_ProgramData / System.Environment.SpecialFolder.CommonApplicationData Пользователь никогда не захочет просматривать здесь, в проводнике, а измененные здесь настройки должны затронуть каждого пользователя на машине . Расположение по умолчанию - % systemdrive% \ ProgramData, которое является скрытой папкой при установке Windows Vista. Вам нужно создать свой каталог и настроить списки ACL, которые понадобятся вам во время установки.