|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как проверить разрядность операционной системы? |
|
CMD/BAT - [решено] Как проверить разрядность операционной системы?
|
Пользователь Сообщения: 99 |
Как проверить разрядность операционной системы?
У виндоуз 7 есть 2 версии: 64-х разрядная и 32-х разрядная. Для 64-х разрядной нужно, чтобы выполнялись дополнительные программы. Как это сделать в коммандом файле? |
|
Отправлено: 22:50, 08-04-2010 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
Цитата Andrey_Vladimirovich:
Цитата Andrey_Vladimirovich:
WOW64 Implementation Details - Win32 apps | Microsoft Docs Detect 64 vs 32 bit OS or Process - Windows CMD - SS64.com |
|||
Отправлено: 05:58, 04-02-2021 | #71 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Забавно, зачем же разработчики так назвали переменную %PROCESSOR_ARCHITECTURE%, если её значение зависит от условий, в которых она запущена? Вот об это я изначально и споткнулся.
|
Отправлено: 07:12, 04-02-2021 | #72 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Andrey_Vladimirovich, видимо решили, что она должна отражать состояние для окружения именно текущего процесса. А потом оставили, вероятно — чтобы не ломать совместимость. Изначально-то ни о каких x64 процессорах речь не шла — были Intel x86, MIPS, Alpha и PowerPC. И проверка была банальная (причём, я веду речь не только о пакетных файлах):
Теперь представьте, что меняется платформа, и под x64 запускается некое унаследованное приложение, в котором используется подобного рода проверка. И тут выбор — либо Вы оставляете для x86-процессов под x64-платформой те же значения переменных окружения и добавляете новую (PROCESSOR_ARCHITEW6432) — и всё унаследованное у Вас гладко и безболезненно продолжает работать, либо Вы кромсаете по живому — и теряете рынок. |
Отправлено: 14:05, 05-02-2021 | #73 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Iska
согласен, что оставили для совместимости. Но изначально было принято не правильное решение. Ведь само название переменной %PROCESSOR_ARCHITECTURE% говорит об архитектуре процессора, либо я не правильно понимаю, что имеется в виду под словом "PROCESSOR" в данном контексте. Поправьте меня, если я не прав. А если прав, то очевидно, что ОС никак не может влиять на процессор. Максимум, что может, так это изменить микропрограмму (если такая имеется) и то, это, например, изменит логику работы процессора, но не его разрядность. И если сходить по ссылке в сообщении 61 написанном greg zakharov, то, как он и указал, написано "The processor architecture of the installed operating system.". Правда, сам он почему-то сделал иной вывод из написанного. Я понимаю, что так сделал разработчик и понимать это нужно так, как это работает, но логики в этом нет. Либо я в упор чего-то не вижу и/или не понимаю. |
Отправлено: 15:33, 05-02-2021 | #74 |
fascinating rhythm Сообщения: 6650
|
Профиль | Отправить PM | Цитировать Andrey_Vladimirovich, видимо, это просто костыль с древних времён, который никто не будет уже менять. Не стоит искать в этом какую-то непогрешимую логику, надо просто принять это как данность.
|
------- Отправлено: 20:06, 05-02-2021 | #75 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Andrey_Vladimirovich:
Вот, например: … # Determine the architecture we're running on. # Define ARCH for our purposes; # Define CPU for use by ntwin32.mak; # Define CONFIG_H to the appropriate config.h for the system; # !ifdef PROCESSOR_ARCHITECTURE # We're on Windows NT CPU = $(PROCESSOR_ARCHITECTURE) CONFIG_H = config.nt OS_TYPE = windowsnt ! if "$(PROCESSOR_ARCHITECTURE)" == "x86" ARCH = i386 CPU = i386 ! else ! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS" ARCH = mips ! else ! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA" ARCH = alpha ! else ! if "$(PROCESSOR_ARCHITECTURE)" == "PPC" ARCH = ppc ! else ! error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)" ! endif ! endif ! endif ! endif !else # We're on Windows 95 ARCH = i386 CPU = i386 CONFIG_H = config.nt OS_TYPE = windows95 !endif … |
|
Отправлено: 20:40, 05-02-2021 | #76 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 03:20, 06-02-2021 | #77 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Andrey_Vladimirovich, нет. Вы никак не поймёте — изначально эта переменная окружения и показывала именно архитектуру процессора. Я же Вам даже образец реального кода тех времён привёл.
|
Отправлено: 06:38, 06-02-2021 | #78 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Iska
то, что эта переменная изначально имела отношение к железу, тут у меня вопросов нет. То есть, изначально эта переменная предназначалась исключительно для определения архитектуры CPU (т.е. железа) и вопроса в определении разрядности (как CPU, так и ОС) не стояло, т.к. все были x32. А потом, с появлением x64 решили, что называется "перегрузить" переменную и использовать её, в добавок с другой, в определении разрядности, как ОС, так и запущенного процесса. Так? |
Отправлено: 07:14, 06-02-2021 | #79 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Andrey_Vladimirovich:
Цитата Andrey_Vladimirovich:
То, что мы используем эти две переменные окружения для определения разрядности ОС — просто побочный эффект, который работает по вышеизложенной причине (и потому, что на пользовательском уровне не встретишь ни IA, ни ARM). |
||
Последний раз редактировалось Iska, 06-02-2021 в 13:51. Причина: Лишняя запятая Отправлено: 08:22, 06-02-2021 | #80 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как убрать меню выбора операционной системы? | trimo | Microsoft Windows 2000/XP | 84 | 26-01-2010 21:57 | |
Вопрос - Как можно проверить был взлом системы или просто зашли под другим пользователем? | ИС_ | Защита компьютерных систем | 0 | 24-09-2009 16:52 | |
как узнать разрядность системы | DIMON171 | Хочу все знать | 20 | 28-06-2008 19:57 | |
Как убрать меню выбора операционной системы | Guest | Microsoft Windows 95/98/Me (архив) | 1 | 10-09-2004 14:11 | |
Разрядность операционной системы | ankerok | Хочу все знать | 7 | 09-01-2003 16:45 |
|