• 0

Programmatically determine whether Windows is 32 or 64 bit.


Question

I am trying to write a launcher that will call up the appropriate installer for a user's system. I am aware of how to determine what verison of Windows such as 2k, XP, Vista, etc. but I am having trouble figuring out how to determine programmatically whether the installed OS is 32 or 64 bit. I would like to do it from the command prompt if possible but any language that would not require me to pre-install libraries on the users computer would also work. Any help would be appreciated.

13 answers to this question

Recommended Posts

  • 0
  lunamonkey said:

These methods only work on Vista and XP SP2, I need the program to function fully on any version of windows from 2000 to present.

  • 0

Yes, we have to know the language to answer the question.

The environment variable PROCESSOR_ARCHITECTURE will be either AMD64 or x86 (which can again have PROCESSOR_ARCHITEW6432 set if the 32-bit program is actually running on a 64-bit OS), but I don't know if that counts as "programatically."

In managed code you can just check the size of IntPtr. It will be 4 for 32-bit and 8 for 64-bit.

  • 0

Guess I need to add a little more context to this post.

I am building a CD with an autorun. The software publisher has 2 seperate installers for 64 and 32 bit environments. I am looking to have a very simple (hopefully batch) application that will determine which installer to use on the given system. I am willing to use a 3rd party utility as long as it is released free and the publisher does not mind redistribution.

  • 0

I don't see why they can't do it themselves? It's just a few lines of C code, compiled as a 32-bit program.

typedef BOOL (WINAPI *IW64PFP)(HANDLE, BOOL *);

BOOL is64bit()
{
	BOOL res = FALSE;
	IW64PFP  IW64P = (IW64PFP)GetProcAddress(GetModuleHandle(L"kernel32"), "IsWow64Process");

	if(IW64P != NULL)
	{
		IW64P(GetCurrentProcess(), &res);
	}

	return res;
}

Then just do whatever you want depending on the result. Also, remember to sign the program with a digital certificate.

If you really want it to just be a batch file though, something like this would work:

@echo off
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
	@start 32bitinstaller.exe
) else (
	if "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
		@start 64bitinstaller.exe
	) else (
		echo Unsupported platform.
		@pause
	)
)
@exit

Edited by hdood
  • 0

hdhood's batch file example should be perfect for what you clarified you want to do. :)

@ Lannister: .NET apps are generally generated at runtime or at install-time with NGEN so one installer can create native apps for both architectures.

  • 0

Thanks hdood. Your batch example was exactly what I needed. Coupled with ver to ensure that the operating system is one of the supported oses for the app I have everything I need. Thanks for everyones prompt responses.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Guess I'll be saving the APK for future use, screw that data-harvesting copilot crap...
    • Looks like it, I have them working after the update.
    • MEmu Android Emulator 9.2.6 (offline installer) by Razvan Serea MEmu is a FREE Android emulator that brings fun of the Android experience to Microsoft Windows devices. It runs on nearly all Windows devices (PC, notebook, 2-in-1 devices, tablets). Comparing to other Android emulators, MEmu provides the highest performance and greatest compatibility. The richest features: Full Android experience with an elegant desktop Flexible customization (CPU#, memory size, resolution, device model, nav bar location, root mode, etc.) Mapping the keyboard / joystick to screen touch for much better game experience Passing through sensor data (e.g. accelerometer) to Android, so you can play car-racing like games intuitively GPS location simulation File sharing between Windows and Android Fast APK installation by drag and drop One-click Android system creation / clone / deleting, and you can run multiple Android instances simultaneously Using MEmu, you can: Have fun playing Android games on PC Chat more conveniently by using keyboard in Whatsapp, Wechat, etc. Watch live show and TV channels Ten seconds to start Directly open several Android Emulator windows MEmu Android Emulator 9.2.6 changelog: Optimized the emulator GUI to support native Windows 11 style. Optimized APK export speed, automatically export to shared directory, and display export progress. Fixed an issue where APK export could occasionally result in incomplete files on Android 12 instance. Fixed graphical corruption issues in Project Net game. Download: MEmu 9.2.6 Offline Installer | 639.0 MB (Freeware) View: MEmu Home Page | MEmu Support Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • You already have local admin rights. It is not really as bad as they say.
  • Recent Achievements

    • Week One Done
      Yawdee earned a badge
      Week One Done
    • Week One Done
      eugwalker earned a badge
      Week One Done
    • First Post
      Ben Gross earned a badge
      First Post
    • One Month Later
      chiptuning earned a badge
      One Month Later
    • Week One Done
      harveycoleman123 earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      657
    2. 2
      +FloatingFatMan
      189
    3. 3
      ATLien_0
      146
    4. 4
      Xenon
      133
    5. 5
      wakjak
      107
  • Tell a friend

    Love Neowin? Tell a friend!