Windows命令来判断.dll文件是32位还是64位?

Windows命令来判断.dll文件是32位还是64位?,windows,dll,cmd,32bit-64bit,Windows,Dll,Cmd,32bit 64bit,我在windows cmd中寻找一个命令,告诉我某个dll文件是32位还是64位 Windows中是否有类似的情况? < P>包含在VisualC++中,并且可以提供“ /标题>代码/开关”的信息。 32位图像的输出示例: FILE HEADER VALUES 14C machine (i386) 6 number of sections 306F7A22 time date stamp Sun Oct 01 22:35:30 1995 0 file po

我在windows cmd中寻找一个命令,告诉我某个dll文件是32位还是64位

Windows中是否有类似的情况?

< P>包含在VisualC++中,并且可以提供“<代码> /标题>代码/开关”的信息。 32位图像的输出示例:

FILE HEADER VALUES
     14C machine (i386)
       6 number of sections
306F7A22 time date stamp Sun Oct 01 22:35:30 1995
       0 file pointer to symbol table
     1D1 number of symbols
      E0 size of optional header
     302 characteristics
            Executable
            32 bit word machine
            Debug information stripped

您可以使用dbghelp库来获取图像头。然后,您可以从
文件头
中读取所需的信息

下面是一些示例代码。请原谅这个相当蹩脚的错误处理。我只是为了快速地解释它,我甚至连C++都不流畅。
#include <Windows.h>
#include <Dbghelp.h>

#include <string>
#include <iostream>

using namespace std;

bool GetImageFileHeaders(wstring fileName, IMAGE_NT_HEADERS &headers)
{
    HANDLE fileHandle = CreateFile(
        fileName.c_str(),
        GENERIC_READ,
        FILE_SHARE_READ,
        nullptr,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        0
    );
    if (fileHandle == INVALID_HANDLE_VALUE)
        return false;

    HANDLE imageHandle = CreateFileMapping(
        fileHandle,
        nullptr,
        PAGE_READONLY,
        0,
        0,
        nullptr
    );
    if (imageHandle == 0)
    {
        CloseHandle(fileHandle);
        return false;
    }

    void *imagePtr = MapViewOfFile(
        imageHandle,
        FILE_MAP_READ,
        0, 
        0,
        0
    );
    if (imagePtr == nullptr)
    {
        CloseHandle(imageHandle);
        CloseHandle(fileHandle);
        return false;
    }

    PIMAGE_NT_HEADERS headersPtr = ImageNtHeader(imagePtr);
    if (headersPtr == nullptr)
    {
        UnmapViewOfFile(imagePtr);
        CloseHandle(imageHandle);
        CloseHandle(fileHandle);
        return false;
    }

    headers = *headersPtr;

    UnmapViewOfFile(imagePtr);
    CloseHandle(imageHandle);
    CloseHandle(fileHandle);

    return true;
}

int main(int argc, char* argv[])
{
    IMAGE_NT_HEADERS headers;
    if (GetImageFileHeaders(L"C:\\windows\\system32\\user32.dll", headers))
    {
        if (headers.FileHeader.Machine == IMAGE_FILE_MACHINE_I386)
            cout << "x86";
        else if (headers.FileHeader.Machine == IMAGE_FILE_MACHINE_IA64)
            cout << "IA64";
        else if (headers.FileHeader.Machine == IMAGE_FILE_MACHINE_AMD64)
            cout << "x64";
        else
            cout << "Machine not recognised";
    }
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
bool GetImageFileHeaders(wstring文件名、图像标题和标题)
{
HANDLE fileHandle=CreateFile(
fileName.c_str(),
泛读,
文件共享读取,
nullptr,
开放式,
文件\u属性\u正常,
0
);
if(fileHandle==无效的句柄值)
返回false;
HANDLE imageHandle=CreateFileMapping(
文件句柄,
nullptr,
第页(只读),
0,
0,
nullptr
);
如果(imageHandle==0)
{
CloseHandle(fileHandle);
返回false;
}
void*imagePtr=MapViewOfFile(
图像句柄,
文件\u映射\u读取,
0, 
0,
0
);
if(imagePtr==nullptr)
{
闭合手柄(图像手柄);
CloseHandle(fileHandle);
返回false;
}
PIMAGE\u NT\u标头头PTR=图像头(图像头PTR);
if(headersPtr==nullptr)
{
解编文件(imagePtr);
闭合手柄(图像手柄);
CloseHandle(fileHandle);
返回false;
}
headers=*headersPtr;
解编文件(imagePtr);
闭合手柄(图像手柄);
CloseHandle(fileHandle);
返回true;
}
int main(int argc,char*argv[])
{
图像标题;
if(GetImageFileHeaders(L“C:\\windows\\system32\\user32.dll”,标题))
{
if(headers.FileHeader.Machine==IMAGE\u FILE\u Machine\u I386)

cout您正在寻找的功能在UNIX系统上本机可用;请使用“file”命令。如果您安装了Cygwin或其他UNIX模拟器,则可以在Windows系统上使用“file”。

如果您安装了7zip:

"C:\Program Files\7-Zip\7z.exe" l "my-program.exe" | findstr CPU

我如何测试一个Windows DLL以确定它是32位还是64位?谢谢,我检查了Windows命令,而不是脚本。<代码> Duppin < /C>和<代码> CygWin文件.exe < /代码>,这也回答了你的问题吗?谢谢你,它为Windows安装了VisualC++的SDK而工作。但是我的目标是机器W。没有安装SDK。还有其他命令吗?@becks:没有内置命令。您必须提供一个实现,无论是您自己的还是类似于
dumpbin
的实现。