2009-07-01 1 views
3

Мы создали приложение, которое хорошо работает в XP, но имеет серьезные проблемы с переносом в Vista и Windows 7, вероятно, из-за того, где записываются пользовательские данные.Доменная совместимость: где должны быть записаны общие данные?

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

Как мы справились с этими задачами в XP, нужно было напрямую записать в папку на диске C: \. Возможно, это плохая практика, возможно, это не так, но в основном все пользователи системы должны иметь доступ к этим данным в виде общих данных. В некоторых установках программы ИТ-ситуация была просто небезопасной, и для компьютера был один пользователь, а затем каждый отдельный пользователь входил в нашу программу отдельно. В других установках программы ИТ-персонал компетентен и имеет разные логины для разных пользователей, но каждый пользователь может получить доступ к C: и каждый пользователь может по-прежнему проверять других пользователей по мере необходимости.

В Vista/Windows 7 все изменяется. Если ИТ-персонал блокирует все до отдельных пользователей, этим пользователям по-прежнему необходимо обмениваться этими общими данными, а запись параметров конфигурации и списков пользователей в каталог приложения просто не допускается. Если система находится в месте с доменом, то у пользователя нет локальных прав администратора, и даже установка может быть проблемой.

Является ли это решением, чтобы установщик создал каталог, в который каждый пользователь может писать, а затем помещать все данные, относящиеся к конкретному пользователю, в этот каталог? Если да, возможно ли, что установщик ведет себя таким образом (даже если ему нужно дать права администратора)? Или есть способ заставить Vista/7 вести себя в более либеральной моде XP?

ответ

1

Наиболее определенный ресурс - "Data and Settings Management в Спецификации приложений для каждой версии Windows в MSDN. Прочтите это, чтобы увидеть обоснование различных специальных папок, существующих в Windows, и как выбрать, к какому из них следует записывать данные.

Далее, вашему приложению потребуется использовать API SHGetSpecialFolderLocation, чтобы получить пути к специальному местоположению.

Папка, наиболее likley служит вашим потребностям - записывается одним пользователя, прочитан администраторами, будет CSIDL_APPDATA - что, на Windows, 6.X соответствует C:\ProgramData\

По умолчанию право на папках создано в этом месте находятся полный контроль для администраторов и владельцев (т. е. пользователя, создавшего его) и доступ только для чтения к членам группы Users.

Совершенно индивидуальное упражнение записывает код, необходимый для изменения списков контроля доступа (ACL) в каталогах. Тот, который будет необходим, если права по умолчанию на выбранном вами месте не достаточны для ваших целей.

0

Как мы справились с этими задачами в XP, нужно было напрямую записать в папку на диске C: \. Может быть, это плохая практика, может быть, это не

Это определенно. 'C: \ Users \ Public \ Public Documents', где это уместно. Используйте ACL для NTFS, чтобы контролировать, кто может читать и записывать файлы.

+0

Итак, в зависимости от того, на какой ОС мы установлены, мы переходим либо в этот каталог, либо в какой-либо другой каталог для XP? Есть ли тот, который является общим для обоих? – mmr

+0

Я считаю, что у XP была аналогичная папка под документами и настройками - если вы хотите иметь только один путь кода, я думаю, что переменная среды% PUBLIC% будет работать –

+0

% public% является новой для Vista, в соответствии с: http: // vistaonwindows.com/environment_variables.html – mmr

0

По умолчанию отсутствует каталог, в котором все пользователи имеют доступ на запись (за исключением, возможно, общесистемного каталога TEMP, но я бы не стал записывать здесь информацию о регистрации).

Если ваша программа установки запущена с правами администратора, она может создать такой каталог и дать всем права на запись. Наиболее логичным местом будет ALLUSERSPROFILE (C:\Documents and Settings\All Users на XP, C:\Users\Public на Vista/7).

Еще одно довольно простое решение состоит в том, чтобы каждый пользователь просто регистрировался в каталоге в своем профиле, например, до Application Data\Your App. Вся информация о протоколировании может быть довольно легко агрегирована административным приложением, и если разрешения чтения не заблокированы, пользователи могут даже читать данные друг друга, если это необходимо.

+0

К сожалению, вся информация, сгенерированная одним пользователем в приложении, должна быть видна всем остальным в приложении; это характер зверя. Конечно, еще одно решение - это база данных, но код слишком далеко ушел за этот уровень изменений. – mmr

1

Часть вашего приложения может запускаться как системная служба и ее собственный пользователь. Таким образом, у него также может быть свой собственный безопасный магазин от ваших пользователей-пользователей. Это также устранило бы всеобъемлющую необходимость в том, чтобы пользователь запускал программу с разрешениями из своей обычной области.

Фактическая часть пользовательского пространства вашего приложения может подключаться к службе и выполнять простые операции хранения/поиска.

+0

Это действительно очень интересная идея. Тем не менее, это, вероятно, значительно замедлит работу с файлами. Кажется, что CommonApplicationData - это место, куда можно пойти. – mmr

0

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

+0

Нет, потому что большинство наших клиентов либо не имеют сети, либо имеют «сети племянников», где ничего не было настроено должным образом, и они не знали бы, какая доля окон была без брошенной на них книги. У нас нет возможности быть сетевым сопровождением среди других вещей. Однако в вашей речи есть какая-то правда, и есть продукты, которые это делают. Продукт, который я разрабатываю, не является одним из них. – mmr

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

  • Нет связанных вопросов^_^