9

Как лучше всего определить, является ли моя ОС 64-битной или 32-битной?

Предположим, что я непосредственно на какой-то ОС, и я собираюсь установить программное обеспечение на нем. Но как определить, является ли ОС 32-битной или 64-битной,

ОС может быть чем угодно, например

  • Windows XP
  • перспектива
  • Windows 7
  • ос х леопард
  • ос х снежный барс
  • Красная шляпа Линукс

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

Заранее спасибо за то, что поделились своими знаниями. Сахар.

5 ответов5

7

Если бы вы выполняли какие-либо действия с использованием сценариев CMD в Windows, вы могли бы запустить командный файл примерно так:

@echo off

if %PROCESSOR_ARCHITECTURE% == x86 (
goto :x86
) else (
goto :x64
)

:x86
start "foo.exe"
goto :eof

:x64
start "bar.exe"
goto :eof
5

Во многих Unix-подобных системах вы можете ввести:

uname -a

Для FreeBSD это выглядит так:

FreeBSD whiplash 8.0-STABLE FreeBSD 8.0-STABLE #1: 
Tue Mar  9 15:38:19 CET 2010     root@beast:/usr/obj/usr/src/sys/WHIPLASH  amd64

(amd64 означает, что это ядро 64-битное)

Для Linux:

Linux softy.vm 2.6.18-128.el5 #1 SMP 
Wed Jan 21 10:44:23 EST 2009 i686 athlon i386 GNU/Linux

(i386 означает, что это ядро 32-битное)

Для MacOSX:

Darwin iMac.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009;
root:xnu 1456.1.25~1/RELEASE_X86_64 x86_64

(x86_64 означает, что это ядро 64-битное)

3

Под виндой:

GUI Way

  1. Нажмите Win+R, чтобы открыть Run ... диалог
  2. Введите winmsd
  3. Ищите строку Процессор или Тип системы

Если они начинаются с x86, у вас есть 32-битная, в противном случае у вас есть 64-битная

Использование cmd.exe
Введите SET PROCESSOR_ARCHITECTURE
x86 означает 32-битный, иначе он 64-битный

Использование Powershell
Введите $env:PROCESSOR_ARCHITECTURE
Значение то же, что и с использованием cmd.exe

берегись
Существует два разных типа 64-битных архитектур.
Один - AMD64 для x64, другой - ia64 для Itanium (не уверен, что это значение точно такое, никогда не работал ни с одним из них)

2

Глупые пути для Linux:

  1. Чтобы идентифицировать ядро, cat /proc /kallsyms, проверьте, имеют ли символы для ядра ширину 32 бита или ширину 64 бита. Тогда вы будете знать, что ядро 32-битное или 64-битное.

  2. Для пользовательского приложения просто запустите:$ file /bin /ls Чтобы проверить, является ли команда ls 32-битной или 64-битной, поскольку ОС может содержать как 32-битные, так и 64-битные приложения, это может быть не так.

2

@paradroid - Спасибо за мозговой штурм ^^

Теперь я использую это для распространяемой Java-программы, которой нужны пользователи Windows, чтобы использовать javac. Этот скрипт проверяет их архитектуру и открывает загрузку для соответствующей версии JDK в браузере по умолчанию ...

@echo off

Title Dragon's JDK Downloader - Runedev Script Compiler

goto menu
:menu
echo.
echo What would you like to do?
echo.
echo 1. Download JDK?
echo 2. Compile Scripts?
echo 3. Quit
echo.

:choice
set /P C=1,2,3?
if "%C%"=="3" goto quit
if "%C%"=="2" goto compile
if "%C%"=="1" goto download
goto choice

:download
if %PROCESSOR_ARCHITECTURE% == x86 (
goto :x86
) else (
goto :x64
)

:x86
START http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u23-windows-i586.exe?BundledLineItemUUID=q9.J_hCupJ8AAAEsXThZDfyg&OrderID=zHCJ_hCujC0AAAEsUjhZDfyg&ProductID=_omJ_hCwMp4AAAEsQIMcKluK&FileName=/jdk-6u23-windows-i586.exe
goto :eof

:x64
START http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u23-windows-x64.exe?BundledLineItemUUID=CMyJ_hCu.vEAAAEsWu9ZDfyf&OrderID=RZ.J_hCuAVkAAAEsUO9ZDfyf&ProductID=ZUuJ_hCwEmwAAAEsOoMcKluK&FileName=/jdk-6u23-windows-x64.exe
goto :eof

:compile
SET cc=javac
SET cflags=
SET scripts=Scripts
SET scriptspre=%scripts%\Precompiled
SET jarpathfile=Settings\path.txt

IF NOT EXIST "%jarpathfile%" (
   ECHO Path file does not exist. Please run Runedev and try again.
   GOTO menu
)

FOR /F "delims=" %%G IN (%jarpathfile%) DO SET jarpath=%%G

CALL FindJDK.bat

IF NOT EXIST %scripts%\*.java (
   ECHO No .java script source files found.
   GOTO menu
)

ECHO Compiling scripts
ECHO. > "%scripts%\.class"
DEL /F /Q "%scripts%\*.class" > NUL
"%cc%" %cflags% -cp "%jarpath%" %scripts%\*.java

:end
PAUSE
EXIT

:quit
exit
:end

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