2010-09-08 3 views
2

Дэвид Фентон недавно упоминалось в another thread, что% AppData% для MS Access устанавливает

«Единственное подходящее место для любого приложения Access (с Windows 2000, на самом деле) папка переменных точек% AppData% окружающей среды к «.

Я очень уважаю знания Дэвида, особенно во всех вопросах, касающихся доступа, но я смущен этим утверждением.

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

Не будет установка в эту папку только для установки приложения для одного пользователя? И если это правда, не будет ли установка вашего приложения несколько раз оставлять несколько отдельных экземпляров вашего приложения на машине? В наши дни пространство на жестком диске дешево, но я до сих пор не хочу, чтобы файл переднего конца и другие поддерживающие файлы (графика, шаблоны Word и Excel и т. Д.) Многократно копировались на компьютер, когда один экземпляр будет делать.

Что вы думаете? Я что-то пропустил, чтобы понять совет Давида?

ответ

1

Во-первых, это проблема только для рабочей станции, на которой есть несколько пользователей, подключенных к ней. Это довольно редко, не так ли?

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

Эта проблема может быть решена с использованием любого из нескольких решений, которые автоматически копируют новую версию переднего конца, когда пользователь открывает ее (при необходимости). Tony Toews's Auto FE Updater - лучшее решение, о котором я знаю. Это довольно универсальный и простой в использовании, и Тони постоянно совершенствует его.

Итак, короче говоря, я не думаю, что здесь есть какая-то проблема.

+0

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

+0

Эта проблема также может возникнуть с системами Terminal Server/Citrix. Хотя там более вероятно, что папка профиля пользователя будет иметь копию FE, которая теперь означает, что она резервируется каждую ночь. –

+0

Да, это несколько необычно, но у меня есть пара баз данных, с которыми я работаю, где сотрудники могут работать с любой рабочей станции в офисе (и у них есть отдельные логины, нет сервера, поэтому нет перемещаемых профилей), поэтому в одном из компании, у машины могло бы быть 20+ профилей, поэтому 20 + экземпляров установки переднего плана (около 100 МБ на установку).Я определенно вижу мудрость ваших советов для большинства ситуаций, я просто избегу их для этих странных компаний. Спасибо Дэвиду и Тони. – KevenDenen

0

Здесь вы столкнулись с проблемой, потому что вы думаете об имени переменной среды %appdata%. Эта переменная хранит каталог, возвращаемый SHGetSpecialFolderPath(CSIDL_APPDATA).

То, что вы ищете, это каталог, возвращенный SHGetSpecialFolderPath(CSIDL_COMMON_APPDATA). Для этого каталога нет переменной окружения. Этот каталог (как указывает имя) является общим для всех пользователей.

Преимущество метода Дэвида заключается в том, что данные Access защищены правами доступа NTFS, когда они находятся в CSIDL_APPDATA. Пользователь может удалить свою копию. В CSIDL_COMMON_APPDATA каждый может удалить одну общую копию.

+0

Были также проблемы с CSIDL_COMMON_APPDATA в Vista/Win7, поскольку сообщалось, что возвращаемая им папка доступна только для чтения для входа в систему уровня пользователя (т. Е. Токены безопасности, с которыми вы работаете в UAC). Я сам этого не испытал, но меня совсем не беспокоит проблема с несколькими копиями интерфейса, поэтому я не имею проблемы с помещением в профиль пользователя. –

+0

Я просто дважды проверял, и обычные пользователи не могут просматривать, не говоря уже об обновлении папки Common App Data. Дэвид, это было очень вероятно, что я сообщаю о проблемах, когда Auto FE Updater не смог создать ярлыки на общем рабочем столе в Windows Vista и новее. –

+0

Это был не ты, Тони, это был кто-то еще. –

0

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

Итак, у вас есть FE и BE.

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

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

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

У меня есть статья здесь, что объясняет на концептуальном уровне и не просто сказать вам два разделить приложения, но хорошо объясняет, почему вы должны разделить ваше приложение:

http://www.members.shaw.ca/AlbertKallal/Articles/split/index.htm

+0

Я не думаю, что он имел в виду многопользовательских пользователей, но несколько пользователей, использующих один и тот же компьютер/разные логины, и каждый из них имел бы свою собственную папку% AppData%. – JeffO

+0

Да, я очень хорошо разбираюсь в разделении интерфейса и бэкэнда. Комментарий Джеффа мертв. – KevenDenen

1

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

Возможно, вы оказались в редкой ситуации для разработчика Access.

2

Да, это проблема, но единственный путь вокруг нее, предполагая, что администраторы ИТ позволяют это, создать папку в корне диска C и установить файл базы данных доступа FE в этой папке. Тем не менее я использую папку Application Data, даже если файлы дублируются. Как вы заявляете, жесткие диски дешевы.

Предполагается, что вы не имеете в виду систему Terminal Server/Citrix, в которой пользователи одновременно регистрируются в системе.

+0

Но установка в корне C: не отличается от установки в папке программ - в любом случае вам необходимо переопределить разрешения по умолчанию, оба из которых доступны только для чтения для пользовательских авторизаций (или любого входа в систему под Vista/Win7 UAC). –

+0

Ну, я попробовал, и обычный пользователь смог создать корневую папку драйвера C в Win 7. Однако, когда я посмотрел на разрешения только группы пользователей и разрешил читать и выполнять, но не изменял. OTOH группа проверенных пользователей имела разрешения на изменение. И я не понимаю разницы между пользователями и группой «Аутентифицированные пользователи». –

+0

Аутентифицированные пользователи представляют собой «динамическую» группу, а не определенную. Кто-то может быть членом аутентифицированного пользователя, поскольку он зарегистрировался на контроллере домена и не был членом группы «Пользователи», например, администратором домена (который обычно является членом группы «Пользователи», но не должен быть) , Аутентифицированные пользователи - это то, что я использую для замены группы EVERYONE (которая включает неидентифицированных пользователей). –