2009-05-22 1 views
2

Мне нужно написать некоторые данные (для пробного использования/истечения срока действия), и мне нужно приложение, чтобы иметь возможность читать/записывать в это место из учетной записи Non-Admin в Vista с включенным UAC.Где я могу написать данные, которые можно просмотреть и изменить всеми пользователями в Windows Vista?

Кроме того, я хотел бы иметь возможность просматривать и изменять данные из любой учетной записи пользователя.

Первоначально я считал, что я пишу в KHEY_CURRENT_USER Registry Hive, но это будет уникально для каждого пользователя.

В других местах?

Я пробовал: % ALLUSERSPROFILE% \ TestDirectory

Но если NonAdmin1 создает и редактирует файл, то Admin1 не может сохранить файл после того, как она модифицируется (хотя он может прочитать файл).

ответ

0

Когда вы создаете файл или после его написания, я думаю, вы должны иметь возможность изменять разрешения для группы «Пользователи», чтобы иметь больше доступа. Похоже, что «Владелец Творца» получает полное разрешение, а группа «Пользователи» получает только чтение & execute.

Другим вариантом может быть создание каталога «TestDirectory» и установка группы «Пользователи» для полного доступа во время установки.

+0

Как я могу изменить разрешения программно? Возможно, с CACLS? IIRC, для которого требуются привилегии администратора. –

+0

Создатель файла обычно имеет специальные привилегии. Мне удалось добавить разрешение записи для группы «Пользователи» в папке, созданной в c: \ ProgramData, без необходимости увеличения UAC. Прошло некоторое время с тех пор, как я сделал какое-либо программирование разрешений, хотя :( – crashmstr

1

Это сообщение в блоге об этом: blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx (Мне еще не разрешено использовать гиперссылку, вам придется вырезать-в-вставить до тех пор, пока она не будет исправлена).

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

Если вы хотите, чтобы файлы были доступны для просмотра в Проводнике всеми пользователями, вы, вероятно, захотите разместить их в каталоге c: \ users \ public. Все, что вам нужно сделать, это поместить их в это место, и безопасность по умолчанию должна работать.

Если вы хотите, чтобы файлы были скрыты от пользователей, вы, вероятно, захотите поместить их в c: \ programdata. В этом случае при создании файлов защита по умолчанию, вероятно, неверна, поэтому вам нужно будет иметь ACL-файлы вашего приложения. Или лучше, возможно, чтобы ваша программа установки создала структуру каталогов для вашего приложения в каталоге c: \ programdata и установила, что программа установки установила хорошие ACL по умолчанию в каждом каталоге - тогда вашему приложению не придется жалеть о настройке ACL, когда она на самом деле создает файлы, он просто должен создавать файлы в нужном месте.

Во всех случаях вы должны вызвать соответствующую функцию Win32 (или .Net Framework), чтобы получить путь к каталогу c: \ programdata или c: \ users \ public. Не перекодируйте эти пути в своем приложении - если вы жестко указали, вы пропустите какой-то случай, когда пользователь переместил каталог или установил Windows каким-то необычным способом, и ваше приложение сломается.

Смежные вопросы