Создать папку в APPDATA в Windows Vista/7

Я сделал приложение в WPF, и у него есть профили пользователей, не связанные с профилями пользователей Windows. Это довольно просто, но мне нужно где-то хранить эти файлы профилей. Как я читал, предпочтительными папками являются Appdata, общие данные приложения и т. д. Для меня даже документы помогут (это школьный проект, эти вещи не имеют большого значения). Моя проблема заключается в том, как создать папку для профилей в некоторых из этих мест, потому что у меня нет повышенных разрешений для моего приложения? Я знаю, как добраться до них, но не читать/писать.

Я предполагаю, что для этого предназначен установщик, и я использую InstallShield Limited Edition с Visual Studio 2010, но я не знаю, как настроить его для создания папки при установке.

Будут ли недостаточные разрешения создавать проблемы, когда мне удастся создать папку приложения и захотеть писать в нее, или они не защищены таким образом?

Tnx заранее.


person Aleksandar Stojadinovic    schedule 12.06.2011    source источник


Ответы (3)


Во время установки вы можете установить разрешения для вашей папки в AppData. Например, вы можете установить полные разрешения для Все. Таким образом, ваше приложение должно иметь доступ на запись в папку.

В вашем случае вы можете установить разрешения через поддержку InstallShield. Другое решение — использовать XCACLS.EXE в качестве пользовательского действия.

person cosmin    schedule 13.06.2011
comment
Вы никогда не захотите делать это, не спросив сначала пользователя. Даже тогда вы действительно не хотите этого делать. - person Jouke van der Maas; 15.06.2011
comment
Теперь я понимаю, что мой выбор слов был не очень удачным. Он может установить разрешения для своей папки из AppData, а не непосредственно из AppData. Я не думаю, что вам нужно спрашивать пользователя об этом. Если это ваша настраиваемая папка, вы можете делать с ней все, что хотите. - person cosmin; 15.06.2011
comment
Если это ваша настраиваемая папка, у вас уже есть права на запись в нее. Изменение разрешений должно производиться пользователем и только пользователем. - person Jouke van der Maas; 16.06.2011

Я бы просто проверил, существуют ли файлы (используя Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), создайте подпапку и напишите туда из своего приложения, если нет. У вас почти всегда есть права на запись туда.

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

person Jouke van der Maas    schedule 12.06.2011
comment
Это уже сделано, у приложения нет на это разрешений. - person Aleksandar Stojadinovic; 12.06.2011

Я нашел решение. При создании установки в сегменте Shortcuts/Folders конфигурации InstallShield щелчок правой кнопкой мыши где-нибудь в дереве открывает контекстное меню, где можно сделать APPDATA и подобные папки видимыми, а затем настроить там то, что вам нужно, т.е. создать папки для приложение для использования. Довольно неинтуитивный подход, поэтому он работает.

Я уже пробовал, запись внутри папки в APPDATA не требует специальных разрешений.

Это решает мою проблему. Спасибо вам всем :) .

person Aleksandar Stojadinovic    schedule 13.06.2011