3

У меня есть несколько приложений, которые устанавливаются с обычным xcopy. Я знаю, что эти приложения будут записывать некоторые данные в установленный каталог во время выполнения. Теперь я хочу, чтобы это приложение было доступно для всех пользователей на моем ПК из меню «Пуск». Где я могу разместить эти приложения под Windows 7? Это все еще "c:\Program Files"? Если это так, не нужны ли приложениям права администратора для записи в этот каталог? Это где роуминг начинает? Если это так, как я могу предотвратить запись приложения в специальную папку для роуминга для каждого пользователя и вместо этого заставить его записывать в ОДНУ папку, в которой находится исполняемый файл?

Обновление (перефразируя вопрос):

Каков рекомендуемый / предпочтительный / официальный способ развертывания приложения (просто папка с exe-файлом и некоторыми дополнительными файлами) на ПК клиента Windows 7, чтобы:

  1. он будет доступен всем пользователям (каждый может дважды щелкнуть по файлу exe или ярлыку к нему)
  2. существует только один экземпляр файлов (не копия для каждого пользователя)
  3. exe-файл может читать и записывать в ту же физическую папку, в которой он находится (так что он читает те же файлы, независимо от того, какой пользователь запускает приложение)
  4. при запуске exe-файла не появляется диалоговое окно UAC с запросом привилегированных прав (exe-файл сам не делает ничего, что требовало бы этого)

4 ответа4

3

Если вы хотите , чтобы приложение , чтобы быть доступным для всех пользователей, она должна быть установлена в директории Program Files (Program Files (x86) , где это применимо).

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

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

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

1

Каков рекомендуемый / предпочтительный / официальный способ развертывания приложения (просто папка с exe-файлом и некоторыми дополнительными файлами) на ПК клиента Windows 7, чтобы:

Предлагать / предпочитать / официальный способ не делать то, что вы хотите сделать. Предпочтительный способ установки 32-битных программ, доступных всем пользователям, - это установка в папку 32-битных программных файлов. Руководство заключается в том, что любые данные приложения должны быть записаны в папку CommonAppDataFolder .

Ваши требования противоречат официальному руководству, и вы должны пересмотреть свои требования. Вот официальное руководство от Microsoft:

1

В таких случаях лучше не использовать C:\Program Files или C:\Program Files (x86) для 32-разрядных программ из-за специальных разрешений, действующих для этих папок.

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

Достаточно легко создать ярлык для исполняемого файла, чтобы вы могли:

  • оставить в каталоге
  • скопировать на рабочий стол пользователя
  • зайти в меню «Пуск» пользователя
  • скопировать в меню «Пуск» для всех пользователей, которое обычно находится в
    C:\ProgramData\Microsoft\Windows\Start Menu .

Последний вариант может быть самым простым для установки.

0

Вы можете оставить его в C:\Program Files , просто изменив разрешения для папки программы, чтобы предоставить другим пользователям соответствующие права доступа в ACL. Вы захотите отключить наследование из родительской папки и вручную добавить пользователя "Все" с разрешениями, которые должны быть у всех.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .