Почему «Программные файлы» и «Программные файлы» (x86), но не «AppData» против «AppData» (x86)?

797
Hau

В Windows, в зависимости от разрядности установленной программы, она перейдет в Program Filesили Program Files (x86).

Кроме того, многие программы установки дают вам возможность установить " Для всех пользователей " в Program Files/ Program Files (x86)или " Только для текущего пользователя " в Users/<username>/AppData/<Local|Roaming>. Вы можете принять это решение на основе привилегий или предпочтений.

Но не существует соглашения для организации пользовательских программ по битности. Это почему?

0
Потому что использование AppData прозрачно для программы, как и Program Files vs Program Files x86 (т.е. это не обязательно). Ramhound 7 лет назад 1
@Ramhound Если использование `AppData` против` Program Files` против `Program Files (x86)` прозрачно для программы ... тогда почему у нас даже есть `Program Files` против` Program Files (x86) `? Hau 7 лет назад 0
Поскольку подсистема WoW64 (Windows 32-bit на Windows 64-bit) все еще существует. Программа, если она написана правильно, будет использовать AppData для пользовательских данных. Программа, которая соответствует стандартам проектирования, установленным Microsoft, не будет знать, что они получают доступ к 32-битному или 64-битному узлу реестра. ** 32-разрядное приложение в 64-разрядной ОС не будет знать, что на самом деле у него заканчиваются «Program Files x86», если вы отлаживаете приложение, если оно следует передовым методам, это просто «Program Files», работать на 64-битных и 32-битных системах ** Ramhound 7 лет назад 0

1 ответ на вопрос

-1
Origami

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

Далее, если приложение не устанавливается в каталог Program Files или Program Files (x86) вместо установки в% APPDATA%, оно не столкнется с ситуацией, когда ему нужно загрузить определенный файл DLL в среде со сложными папками,% APPDATA. % очень понятно.

Как правило, 32-разрядная версия автоматически устанавливается в C: \ Program Files (x86), а 64-разрядная версия автоматически устанавливается в C: \ Program Files, насколько я знаю, только несколько приложений будут установлены в% APPDATA%., только Chrome устанавливается в% APPDATA%.

Вкратце, почему нет папки AppData (x86), потому что она не нужна.

Не могли бы вы уточнить: «Далее, если приложение не устанавливается в каталог Program Files или Program Files (x86), а не устанавливается в% APPDATA% ...». Вы говорите, что приложение установлено в Program Files или AppData? Hau 7 лет назад 0
Что делать, если я хочу установить 32-разрядную версию И 64-разрядную версию приложения, оба в AppData? Hau 7 лет назад 0
@Origami - Firefox и Outlook - другие примеры программ, которые используют AppData. Ramhound 7 лет назад 0
@Hau - Если вы устанавливаете программу в AppData, то вы нарушаете стандарты разработки Microsoft. Приложения должны быть установлены в Program Files, если они являются 64-разрядными, и Program Files x86, если они являются 32-разрядными. Если у вас есть случай, когда вам нужны два разных профиля (файлы данных, хранящиеся в AppData) для 32-битной и 64-битной версии приложения, вам остается самостоятельно разработать приложение для обработки. Как правило, 32-разрядные и 64-разрядные версии, скажем, Outlook, Firefox и Chrome имеют общий профиль пользователя. Ramhound 7 лет назад 1
@Ramhound - Итак, в итоге (если мы следуем стандартам проектирования Microsoft): ** 1. ** Не устанавливайте программы в AppData. Установите их в `Program Files` /` Program Files (x86) `, ** 2. ** AppData для данных, а не двоичных файлов, ** 3. ** Если у вас нет прав администратора, не устанавливайте программы ? Hau 7 лет назад 0