Запишите в папке “ProgramData” (W7 и Vista).NET

Я устанавливаю свое приложение в соответствии с каталогом "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>
16
задан aco 2 March 2010 в 16:12
поделиться

2 ответа

Это связано с UAC. Ваша программа запускается от имени администратора для создания / удаления файлов / папок в этой SpecialFolder.

5
ответ дан 30 November 2019 в 23:00
поделиться

Простое для понимания объяснение различных мест, где можно хранить программные данные, можно найти здесь:

http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i -write-program-data-вместо-of-program-files.aspx

Что касается ProgramData, он говорит:

FOLDERID_ProgramData / System.Environment.SpecialFolder.CommonApplicationData Пользователь никогда не захочет просматривать здесь, в проводнике, а измененные здесь настройки должны затронуть каждого пользователя на машине . Расположение по умолчанию - % systemdrive% \ ProgramData, которое является скрытой папкой при установке Windows Vista. Вам нужно создать свой каталог и настроить списки ACL, которые понадобятся вам во время установки.

8
ответ дан 30 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: