2

Цель этого состоит в том, чтобы стандартные папки "программные файлы" (32 и 64-разрядные) по умолчанию располагались по произвольному пути, возможно, на диске, отличном от того, где живет Windows.

Первоначально я думал, что это можно сделать с помощью системной переменной среды через диалоговое окно, расположенное под Панели управления -> Система -> Дополнительно -> Переменные среды. Эти переменные оказались в реестре под ключом HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion. Однако одна конкретная запись сбивает с толку. Кажется, запись ProgramFilesPath указывает на переменную среды, которая не определена в том же разделе реестра.

Я мог бы предположить, что разницы между ProgramFilesDir и ProgramFilesPath нет, и что одна из них существует как обратная совместимость, но иметь какой-то законный ресурс от Microsoft для просмотра было бы лучше, чем догадываться.

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

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

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

1 ответ1

0

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

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

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

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

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