Como encontrar o meu sistema operacional Windows é x64 ou ia64?

12

Quando digitalizo alguns executáveis ​​no diretório do Windows com o ProtectionID , verifiquei o Windows Explorer. E os resultados são apresentados abaixo.

Scanning -> C:\Windows\explorer.exe
File Type : 64-Bit Exe (Subsystem : Win GUI / 2), Size : 2871808 (02BD200h) Byte(s)
[!] Warning : Cpu is AMD, this file is for IA64 (incompatible)
[x] Warning - FileAlignment seems wrong.. no solution calculated (using NULL)
[File Heuristics] -> Flag : 00000000000001001101000000000000 (0x0004D000)
[CompilerDetect] -> Visual C++ 9.0 (Visual Studio 2008)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 0.548 Second(s)

Eu sei que meu processador é o Core 2 Duo e sua arquitetura x64, como resultado no sinalizador de aviso. Mas o sistema operacional que instalei é o Windows 7 x64. Os resultados acima me levantam uma dúvida de que meu sistema operacional é x64 ou IA64? Como posso encontrar isso?

Atualização Na versão mais recente do ProtectionID, esse aviso falso parece corrigido.

Jones
fonte
3
Até onde eu posso ver, apenas as edições Server do Windows têm uma versão explícita para a arquitetura Itanium (também conhecida como IA64), com o Win7 de 64 bits apenas suportando o conjunto de instruções x64 "usual". Você tem 100% de certeza de que instalou a versão de 64 bits do Windows 7? E você tem 100% de certeza de que sua CPU está definitivamente 64 bits (não verifiquei se todos os Core 2 Duos eram). Ah, e exe funciona (suponho que mais você teria sérios problemas no SO)? Nesse caso, eu duvido que o software receba uma leitura válida, verifique com outra coisa.
DMA57361
O tipo de CPU deve estar na variável de ambiente %PROCESSOR_ARCHITECTURE%e echo %PROCESSOR_ARCHITECTURE%no prompt de comando deve fornecer AMD64(como você diz que está usando um Core 2 Duo). msinfo32.exetambém deve ter um campo "Tipo de sistema", que diz x64-based PCpara mim em um processador x86-64. Não tenho certeza como / porque você tem um binário IA64 sistema ...
Bob
6
Isso ou o ProtectionID está quebrado.
Qual versão do ProtectionID?
David Schwartz
@ DMA57361 - Eu tenho o Core 2 Duo E7300. Eu tenho o Windows 7 x64 Ultimate. De acordo com o meu taskmgr, cerca de 40% dos meus processos são executados no modo de compatibilidade x86, ou seja, com um sufixo * 32 após o nome da imagem.
1616 Jones

Respostas:

18

O tipo de CPU deve estar na variável de ambiente %PROCESSOR_ARCHITECTURE%e, echo %PROCESSOR_ARCHITECTURE%no prompt de comando, fornecer AMD64um processador x86-64. O msinfo32.exe também deve ter um campo "Tipo de sistema", que diz PC baseado em x64 para mim em um processador x86-64. Não sei como / por que você tem um sistema binário IA64 ...


Parece haver um problema com o ProtectionID:

Scanning -> C:\Windows\explorer.exe
File Type : 64-Bit Exe (Subsystem : Win GUI / 2), Size : 2871808 (02BD200h) Byte(s)
[!] Warning : Cpu is AMD, this file is for IA64 (incompatible)
[x] Warning - FileAlignment seems wrong.. no solution calculated (using NULL)
[File Heuristics] -> Flag : 00000000000001001101000000000000 (0x0004D000)
[CompilerDetect] -> Visual C++ 9.0 (Visual Studio 2008)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 0.828 Second(s)

Mas na guia Coisas do PE:

Captura de tela (IMAGE_FILE_MACHINE_AMD64
Clique para ampliar

Prumo
fonte
Navegando no mesmo barco! Além disso, as ferramentas Diversos -> Ferramentas Diversos / info Sistema -> A arquitetura do processador diz 'Intel (x86) com base'
Jones
5

Como observa o primeiro comentário sobre o Q, não há compilação IA64 do Windows 7. Para uma versão IA64, você deve usar o servidor.

Talvez a maneira mais confiável de determinar essas informações seja com o WMI e as classes Win32_OperatingSystem e Win32_ComputerSystem .

Usando o PowerShell e o gwmialias para Get-WmiObject:

PS> gwmi win32_computersystem - computador um, dois, localhost | ft __SERVER, systemtype

__SERVER systemtype
-------- ----------
UM PC baseado em X86
DOIS PCs baseados em x64
TRÊS PCs baseados em x64

portanto, um não é de 64 bits e os outros dois são x64, nenhum é IA64. 1 Então:

PS [64] E: \ # 12> gwmi win32_operatingsystem -comp um, dois, host local | ft __SERVER, legenda

__SERVER legenda
-------- -------
ONE Microsoft® Windows Server® 2008 Standard
DOIS Microsoft Windows Server 2008 R2 Standard
TRÊS Microsoft Windows 7 Ultimate

Então, um é Win2k8 de 32 bits, dois é Win2k8R2 de 64 bits e três (localhost) é Win7 de 64 bits.


1 Não tenho um sistema IA64 para verificar qual valor o SystemTypecampo terá.

Richard
fonte
3

A arquitetura IA64 é completamente diferente da arquitetura x86-64 (também conhecida como AMD64), que é o que a maioria das pessoas quer dizer quando diz 64 bits. Portanto, mesmo que houvesse uma versão compatível com IA64 do Windows 7 (que, como outras pessoas apontaram, não há 1 ), seria necessário um processador Itanium , você não seria capaz de instalá-lo em um Core 2 Duo ou qualquer outro sistema x86-64.

Edit: também, uma maneira alternativa de obter a arquitetura do processador com WMI (no prompt de comando ou no PS):

wmic CPU get Architecture

CPUé um alias para a classe Win32_Processor e os possíveis valores 2 são (significados entre parênteses):

  • 0 (x86)
  • 9 (x86-64)
  • 6 (Itanium)

1 A última versão do cliente para oferecer suporte ao IA64 foi o Windows XP; O Windows Server 2008 R2 será a última versão do servidor .
2 Existem alguns outros, para arquiteturas como MIPS, Alpha e PowerPC, mas esses estão lá principalmente por motivos herdados; consulte o artigo do MSDN acima para obter detalhes completos.

Indrek
fonte
@ William.Ebe Uma CPU x86-64 padrão, conforme o esperado. O problema provavelmente está no ProtectionID, então. Ainda bem que pude ajudar. Lembre-se de aceitar a resposta que mais lhe ajudou, clicando no contorno verde da marca de seleção ao lado.
Indrek
-1

Abra uma janela de comando e execute o seguinte:

C:\>set | findstr ARCH

PROCESSOR_ARCHITECTURE=x86

fonte
2
Listar todas as variáveis ​​e filtrar uma não é eficiente quando você já sabe o nome. Simplesmente use a variável de ambiente diretamente, como descrevi na minha resposta.
22413 Bob