Вопрос по windows – Совместимость доменов: где должны быть записаны общие данные?

3

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

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

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

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

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

Ваш Ответ

5   ответов
0

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

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

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

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

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

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

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

1

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

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

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

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

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

Так, в зависимости от того, на какой ОС мы установлены, мы идем в этот каталог или в какой-то другой каталог для XP? Есть ли что-то общее для обоих? mmr
Я считаю, что в XP была похожая папка в разделе «Документы и настройки» - если вы хотите использовать только один путь к коду, я думаю, что переменная среды% PUBLIC% будет работать Paul Betts
% public% является новым для Vista, в соответствии с: Vistaonwindows.com / environment_variables.html mmr
Bummer - ну, если он не установлен, вы можете вернуться к местоположению X Paul Betts
0

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

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

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

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

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