Jump to content

Welcome to MSFN Forum
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account


Photo

how can I identify my windows 7 version


  • Please log in to reply
28 replies to this topic

#1
adj

adj
  • Member
  • 2 posts
  • Joined 19-December 09
hello, I have just upgraded to Ultimate, and am looking at M/soft's various optional add-ons, but (while I can just about work out that I probably have the 86 version since I don't have the 64-bit version - is that a kind way to treat ungeeks ?) I don't know whether I have the N version, the un-N version or what (I get the impression the KN version is for businesses - yes ?). All my pc seems able to tell me is that I have version 6.1, number 7600. (When i try to find Windows7 on the computer, nothing useful transpires, mostly bits of images, making one wonder if it's really there)

I am also unclear whether I need Windows Media Player, if I have it, or what, since one attempt at downloading said I couldn't install it for Firefox - but offered me manual install, which aborted....
Sorry to be such a klutz, adj


How to remove advertisement from MSFN

#2
PC_LOAD_LETTER

PC_LOAD_LETTER

    Well, I stole something else

  • Super Moderator
  • 1,829 posts
  • Joined 13-October 07
  • OS:Windows 7 x64
  • Country: Country Flag
click start -> right click 'Computer' -> click 'Properties' itll say what edition of windows you have and right below your memory count you should see 32-bit or 64-bit

#3
adj

adj
  • Member
  • 2 posts
  • Joined 19-December 09
Thanks but all it says is Windows Ultimate (well actually it says it in French, Windows Edition Intégrale, 'cos I haven't got round to changing the lannguage yet) but it doesn't say N or M or whatever ( and I knew it was 32 bit 'cos that's what I decidedto buy)

#4
MrJinje

MrJinje

    Tool™ Developer

  • Developer
  • 1,039 posts
  • Joined 14-October 09
  • OS:none specified
  • Country: Country Flag
Here is a batch script that gives detailed information.

Version.cmd
systeminfo
pause

If it doesn't say Ultimate N or whatever then it's not the N version. Very simple. It'll be the second and third entries in the list.

Try to run this link and tell us if WMP opens up. It should work even if GUI access has been limited. You'll probably have to adjust it to the "program files" in your language.

C:\Program Files\Windows Media Player\wmplayer.exe

Edited by MrJinje, 19 December 2009 - 01:49 PM.


#5
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
Look at the output of the System Properties window carefully - if it doesn't say "System Type: 64-bit", it's a 32bit (x86) installation of Windows 7.

Posted Image
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#6
SyntaxError

SyntaxError

    Member

  • Member
  • PipPip
  • 150 posts
  • Joined 04-January 05
  • OS:none specified
  • Country: Country Flag
Windows 7 N, K, KN, and E editions explained

http://www.mydigital...mation-and-faq/

Windows 7 N: Windows 7 N is meant for European market, and includes the same functionality as Windows 7, except that it does not include Windows Media Player and related technologies such as Windows Movie Maker.

Windows 7 K: Windows 7 K is meant for Korean market, and includes the same functionality as ordinary Windows 7, except that it includes links to a Media Player Center Web site and a Messenger Center Web site.

Windows 7 KN: Windows 7 KN is meant for Korean market, and includes the same functionality as Windows 7 K, except that it does not include Windows Media Player and related technologies such as Windows Movie Maker, links to download Windows Live Messenger, or links to a Media Player Center Web Site and a Messenger Center Web site.

Windows 7 E: Windows 7 E is meant for European Commission countries, including UK, and includes the same functionality as ordinary standard flavor of Windows 7, except that it does not include Internet Explorer 8 (IE8).


Edited by SyntaxError, 23 December 2009 - 07:21 AM.


#7
MagicAndre1981

MagicAndre1981

    after Windows 7 GA still Vista lover :)

  • Patrons
  • 6,031 posts
  • Joined 28-August 05
  • OS:Vista Ultimate x86
  • Country: Country Flag

Donator

I have also a question to determine the K/KN Edition. The GetProductInfo API only return the value for Ultimate(N). Any ideas how to determine the K/KN Versions?
Posted Image

#8
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
Not entirely sure - I'll build up an N and KN version and see what the differences are in the usual places.
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#9
SyntaxError

SyntaxError

    Member

  • Member
  • PipPip
  • 150 posts
  • Joined 04-January 05
  • OS:none specified
  • Country: Country Flag
Might be a stupid question, but going by the descriptions I posted, wouldn't it be simple to figure out which version one has?

#10
PC_LOAD_LETTER

PC_LOAD_LETTER

    Well, I stole something else

  • Super Moderator
  • 1,829 posts
  • Joined 13-October 07
  • OS:Windows 7 x64
  • Country: Country Flag

Might be a stupid question, but going by the descriptions I posted, wouldn't it be simple to figure out which version one has?

Yes the information you provided should be enough to help the OP.

MagicAndre and cluberti are looking at the problem from a developers perspective and trying to find the best way to detect if one of their programs is run on N/KN versions where the programs functionality might be limited due to missing components.

#11
MagicAndre1981

MagicAndre1981

    after Windows 7 GA still Vista lover :)

  • Patrons
  • 6,031 posts
  • Joined 28-August 05
  • OS:Vista Ultimate x86
  • Country: Country Flag

Donator

MagicAndre and cluberti are looking at the problem from a developers perspective and trying to find the best way to detect if one of their programs is run on N/KN versions where the programs functionality might be limited due to missing components.


yes, that's what I want.
Posted Image

#12
SyntaxError

SyntaxError

    Member

  • Member
  • PipPip
  • 150 posts
  • Joined 04-January 05
  • OS:none specified
  • Country: Country Flag
Ok I get it now. Thanks.

#13
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
Given my blazing fast download speeds today < sarcasm / >, it may take awhile. However, so far I've only found reference to determining between non-N and N versions (as MagicAndre was questioning), with no information in any of my testing of GetVersionInfo, IsOS, or even Win32_OperatingSystem that would indicate there's even a check or return for a K or KN version. Given that these versions were released after the XP codebase was put down, I can understand it in XP, but not Vista or Win7. However, it looks like (according to KB 922461) that checking HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\WindowsFeatures for the value data of 0 in the "Windows Media Player" DWORD is the suggested way of determining a K or KN SKU (it either doesn't exist or is set to 1 on other SKUs).

Technically the K and KN versions should only be available in Korea and in Korean-language versions of the OS, but I would admit it would be nicer to have some way of checking, considering they've added checking for N SKUs).
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#14
gunsmokingman

gunsmokingman

    MSFN Master

  • Super Moderator
  • 2,418 posts
  • Joined 02-August 03
  • OS:none specified
  • Country: Country Flag
You can return N Edition of Windows 7 using Win32_OperatingSystem

Save As GetEdition.vbs

Dim Wmi :Set Wmi = GetObject("winmgmts:\\.\root\CIMV2") 
Dim Sku, Wn7
   For Each Obj in Wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
'-> Check To Make Sure The Build Is Above Windows 7 
	If Obj.BuildNumber => 7600 Then 
	 Wn7 = True 
	 Select Case Obj.OperatingSystemSKU
	  Case 0 Sku = "Undefined Edition"
	  Case 1 Sku = "Ultimate Edition"
	  Case 2 Sku = "Home Basic Edition"
	  Case 3 Sku = "Home Premium Edition"
	  Case 4 Sku = "Enterprise Edition"
	  Case 5 Sku = "Home Basic N Edition"
	  Case 6 Sku = "Business Edition"
	  Case 7 Sku = "Standard Server Edition"
	  Case 8 Sku = "Datacenter Server Edition"
	  Case 9 Sku = "Small Business Server Edition"
	  Case 10 Sku = "Enterprise Server Edition"
	  Case 11 Sku = "Starter Edition"
	  Case 12 Sku = "Datacenter Server Core Edition"
	  Case 13 Sku = "Standard Server Core Edition"
	  Case 14 Sku = "Enterprise Server Core Edition"
	  Case 15 Sku = "Enterprise Server Edition for Itanium-Based Systems"
	  Case 16 Sku = "Business N Edition"
	  Case 17 Sku = "Web Server Edition"
	  Case 18 Sku = "Cluster Server Edition"
	  Case 19 Sku = "Home Server Edition"
	  Case 20 Sku = "Storage Express Server Edition"
	  Case 21 Sku = "Storage Standard Server Edition"
	  Case 22 Sku = "Storage Workgroup Server Edition"
	  Case 23 Sku = "Storage Enterprise Server Edition"
	  Case 24 Sku = "Server For Small Business Edition"
	  Case 25 Sku = "Small Business Server Premium Edition"
	  Case Else
	  Sku = "Could Not Find Operating System SKU"
	 End Select
	End If 
   Next
'-> Results
   If Wn7 = True Then
	MsgBox "Operating System SKU : " & Sku,4128, "OS SKU"
   Else
	MsgBox "Error : This Is Not A Windows 7 OS." ,4128, "ERROR SKU"
   End If




GunSmokingMan



#15
MagicAndre1981

MagicAndre1981

    after Windows 7 GA still Vista lover :)

  • Patrons
  • 6,031 posts
  • Joined 28-August 05
  • OS:Vista Ultimate x86
  • Country: Country Flag

Donator

I know how to get the N Edition. But I need to know how to get the K/KN.
Posted Image

#16
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
I think the argument is that there really aren't any differences between the EU's N versions and the Korean "KN" versions in Vista and 7, unless you're specifically looking for IM support on XP. Both versions lack Media Player support, so if you've got an "N" version and the language is Korean, for example, the locale output would be "0412" and the OperatingSystemSKU would return an N version (in almost all scenarios). From that, you can fairly easily assume that this is a Korean N version, given (for example) a SystemSKU of 16 (Business N) and a Locale of Korean (0412). This would be harder with Ultimate versions, however, as (at least on Vista) they always seem to return "Ultimate" for the Caption without N distinction. I haven't tried it on Windows 7 yet, as I'm still downloading the K and KN versions, but I would be interested to see what the Caption value is and if N has been added for Ultimate SKUs or not.

GetProductInfo returns all of the possible regular, E, and N SKUs, and again pairing it with a locale check would give you a good idea if it was a KN version (versus just an EU "N" version), but there's not really a difference short of the KN version lacking a pre-installed IM client on XP, and with Vista and Win7 there is no preinstalled IM client in the base OS image anyway.
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#17
MagicAndre1981

MagicAndre1981

    after Windows 7 GA still Vista lover :)

  • Patrons
  • 6,031 posts
  • Joined 28-August 05
  • OS:Vista Ultimate x86
  • Country: Country Flag

Donator

ok, what's the correct API call to get the system language?
Posted Image

#18
MrJinje

MrJinje

    Tool™ Developer

  • Developer
  • 1,039 posts
  • Joined 14-October 09
  • OS:none specified
  • Country: Country Flag
Is the KN Version on Technet/MSDN ?

Edited by MrJinje, 23 December 2009 - 01:34 PM.


#19
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
GetLocaleInfo is what you should use if this is going to be run on platforms older than and including Vista/Win7, but if the app is Vista and newer only, you can use GetSystemDefaultLocaleName instead.
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#20
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag

Is the KN Version on Technet/MSDN ?

It's on MSDN if you change your language, I dunno about technet.
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#21
gunsmokingman

gunsmokingman

    MSFN Master

  • Super Moderator
  • 2,418 posts
  • Joined 02-August 03
  • OS:none specified
  • Country: Country Flag
I added a check for the Korean Language

Dim Wmi :Set Wmi = GetObject("winmgmts:\\.\root\CIMV2") 
Dim Lng, Sku, Wn7
   For Each Obj in Wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
'-> Check To Make Sure The Build Is Above Windows 7 
	If Obj.BuildNumber => 7600 Then 
	 Wn7 = True
'-> 1042 = Korean
	 Lng = Obj.OSLanguage
	 Select Case Obj.OperatingSystemSKU
	  Case 0 Sku = "Undefined Edition"
	  Case 1 Sku = "Ultimate Edition"
	  Case 2 Sku = "Home Basic Edition"
	  Case 3 Sku = "Home Premium Edition"
	  Case 4 Sku = "Enterprise Edition"
	  Case 5 Sku = "Home Basic N Edition"
	  Case 6 Sku = "Business Edition"
	  Case 7 Sku = "Standard Server Edition"
	  Case 8 Sku = "Datacenter Server Edition"
	  Case 9 Sku = "Small Business Server Edition"
	  Case 10 Sku = "Enterprise Server Edition"
	  Case 11 Sku = "Starter Edition"
	  Case 12 Sku = "Datacenter Server Core Edition"
	  Case 13 Sku = "Standard Server Core Edition"
	  Case 14 Sku = "Enterprise Server Core Edition"
	  Case 15 Sku = "Enterprise Server Edition for Itanium-Based Systems"
	  Case 16 Sku = "Business N Edition"
	  Case 17 Sku = "Web Server Edition"
	  Case 18 Sku = "Cluster Server Edition"
	  Case 19 Sku = "Home Server Edition"
	  Case 20 Sku = "Storage Express Server Edition"
	  Case 21 Sku = "Storage Standard Server Edition"
	  Case 22 Sku = "Storage Workgroup Server Edition"
	  Case 23 Sku = "Storage Enterprise Server Edition"
	  Case 24 Sku = "Server For Small Business Edition"
	  Case 25 Sku = "Small Business Server Premium Edition"
	  Case Else
	  Sku = "Could Not Find Operating System SKU"
	 End Select
	End If 
   Next
'-> Results
   If Wn7 = True Then
	If Lng = 1042 Then 
	 MsgBox "Korean Version Of Windows : " & Sku,4128, "OS SKU"
	Else
	 MsgBox "Operating System SKU : " & Sku,4128, "OS SKU"
	End If 
   Else
	MsgBox "Error : This Is Not A Windows 7 OS." ,4128, "ERROR SKU"
   End If




GunSmokingMan



#22
MagicAndre1981

MagicAndre1981

    after Windows 7 GA still Vista lover :)

  • Patrons
  • 6,031 posts
  • Joined 28-August 05
  • OS:Vista Ultimate x86
  • Country: Country Flag

Donator

Hi,

I figured out why you can't use GetProductInfo to get the K/KN. Each Editions has the value defined inside the global policy file and this value is the same like the value for the normal Ultimate (N) Edition. If you install a german MUI on the K Edition, the K is no longer displayed under winver. So Windows Ultimate K = Windows Ultimate + Korean MUI.
Posted Image

#23
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
Gunsmokingman gave me an idea, and I ran with it - I made a simple "computer info" script based on his idea to case out the locale and SKU, amongst other things. I've posted this in the Code Repository. This also uses my ElevateThisScript subroutine (if you need/desire), which is also available in the Code Repository.

'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// NAME:		osinfo.vbs
'//
'// Original:	http://www.cluberti.com/blog
'// Last Update: 28th December 2009
'//
'// Comment:	 VBS example file for use as an OS info gathering template.
'//
'// NOTE:		Provided as-is - usage of this source assumes that you are at the
'//			  very least familiar with the vbscript language being used and
'//			  the tools used to create and debug this file.
'//
'//			  In other words, if you break it, you get to keep the pieces.
'//
'//			  Also, if you want to use this on W2K, prepare to hack, as this
'//			  was really designed with XP+ systems in mind.
'//
'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// This script will require elevated privileges if run from a non-admin account, so
'// calling the ElevateThisScript() Sub should get the script a full admin token. This is
'// currently disabled, but if you need non-admin users to run this script, enable the
'// call to this subroutine to pop-up a dialog box (they'll of course need administrative
'// credentials to put in the challenge dialog before the script will execute with an
'// administrative token):

' ElevateThisScript()


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables and wMI connections for scripting against:
CONST HKEY_LOCAL_MACHINE = &H80000002
CONST SEARCH_KEY = "DigitalProductID"
Dim arrSubKeys(4,1)
Dim foundKeys
Dim iValues, arrDPID
foundKeys = Array()
iValues = Array()
arrSubKeys(0,0) = "Windows PID Key:	   "
arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
arrSubKeys(2,0) = "Office XP PID Key:	 "
arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
arrSubKeys(1,0) = "Office 2003 PID Key:   "
arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
arrSubKeys(3,0) = "Office 2007 PID Key:   "
arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
arrSubKeys(4,0) = "Office 2010 PID Key:   "
arrSubKeys(4,1) = "SOFTWARE\Microsoft\Office\14.0\Registration\{10140000-0011-0000-1000-0000000FF1CE}"

strComputer = "."
Arch = ""
Sku = ""


Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")

Set colOSItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_OperatingSystem",,48)

Set colProcItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_Processor",,48)

Set colCompSysItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_ComputerSystem",,48) 

Set colTZItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_TimeZone",,48) 

Set colCompSysProdItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_ComputerSystemProduct",,48)

Set colBIOSItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_BIOS",,48)

Set colDiskItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_LogicalDisk",,48) 

Set colNetAdapConfigItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_NetworkAdapterConfiguration",,48) 

Set colVideoItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_VideoController",,48) 

Set colSoundItems = objWMIService.ExecQuery( _
	"SELECT * FROM Win32_SoundDevice",,48) 


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Get OS SKU from Win32_OperatingSystem class:

	For Each objOSItem in colOSItems
	If objOSItem.BuildNumber => 6000 Then
		Arch = objOSItem.OSArchitecture

		Select Case objOSItem.OperatingSystemSKU
			Case 0 Sku = "Unknown Windows version"
			Case 1 Sku = "Ultimate Edition"
			Case 2 Sku = "Home Basic Edition"
			Case 3 Sku = "Home Premium Edition"
			Case 4 Sku = "Enterprise Edition"
			Case 5 Sku = "Home Basic N Edition"
			Case 6 Sku = "Business Edition"
			Case 7 Sku = "Standard Server Edition"
			Case 8 Sku = "Datacenter Server Edition"
			Case 9 Sku = "Small Business Server Edition"
			Case 10 Sku = "Enterprise Server Edition"
			Case 11 Sku = "Starter Edition"
			Case 12 Sku = "Datacenter Server Core Edition"
			Case 13 Sku = "Standard Server Core Edition"
			Case 14 Sku = "Enterprise Server Core Edition"
			Case 15 Sku = "Enterprise Server Edition for Itanium-Based Systems"
			Case 16 Sku = "Business N Edition"
			Case 17 Sku = "Web Server Edition"
			Case 18 Sku = "Cluster Server Edition"
			Case 19 Sku = "Home Server Edition"
			Case 20 Sku = "Storage Express Server Edition"
			Case 21 Sku = "Storage Standard Server Edition"
			Case 22 Sku = "Storage Workgroup Server Edition"
			Case 23 Sku = "Storage Enterprise Server Edition"
			Case 24 Sku = "Server For Small Business Edition"
			Case 25 Sku = "Small Business Server Premium Edition"
			Case Else
			Sku = "Could Not Determine Operating System SKU"
		End Select
	End If


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Get current OS locale setting from Win32_OperatingSystem class:

		Select Case objOSItem.Locale
			Case 0436 Locale = "Afrikaans (South Africa)"
			Case 041c Locale = "Albanian (Albania)"
			' Case 045e Locale = "Amharic (Ethiopia)"
			Case 0401 Locale = "Arabic (Saudi Arabia)"
			Case 1401 Locale = "Arabic (Algeria)"
			Case 3c01 Locale = "Arabic (Bahrain)"
			Case 0c01 Locale = "Arabic (Egypt)"
			Case 0801 Locale = "Arabic (Iraq)"
			Case 2c01 Locale = "Arabic (Jordan)"
			Case 3401 Locale = "Arabic (Kuwait)"
			Case 3001 Locale = "Arabic (Lebanon)"
			Case 1001 Locale = "Arabic (Libya)"
			Case 1801 Locale = "Arabic (Morocco)"
			Case 2001 Locale = "Arabic (Oman)"
			Case 4001 Locale = "Arabic (Qatar)"
			Case 2801 Locale = "Arabic (Syria)"
			Case 1c01 Locale = "Arabic (Tunisia)"
			Case 3801 Locale = "Arabic (U.A.E.)"
			Case 2401 Locale = "Arabic (Yemen)"
			Case 042b Locale = "Armenian (Armenia)"
			Case 044d Locale = "Assamese"
			Case 082c Locale = "Azeri (Cyrillic)"
			Case 042c Locale = "Azeri (Latin)"
			Case 042d Locale = "Basque"
			Case 0423 Locale = "Belarusian"
			Case 0445 Locale = "Bengali (India)"
			Case 0845 Locale = "Bengali (Bangladesh)"
			Case 141A Locale = "Bosnian (Bosnia/Herzegovina)"
			Case 0402 Locale = "Bulgarian"
			Case 0455 Locale = "Burmese"
			Case 0403 Locale = "Catalan"
			Case 045c Locale = "Cherokee (United States)"
			Case 0804 Locale = "Chinese (PRC)"
			Case 1004 Locale = "Chinese (Singapore)"
			Case 0404 Locale = "Chinese (Taiwan)"
			Case 0c04 Locale = "Chinese (Hong Kong SAR)"
			Case 1404 Locale = "Chinese (Macao SAR)"
			Case 041a Locale = "Croatian"
			Case 101a Locale = "Croatian (Bosnia/Herzegovina)"
			Case 0405 Locale = "Czech"
			Case 0406 Locale = "Danish"
			Case 0465 Locale = "Divehi"
			Case 0413 Locale = "Dutch (Netherlands)"
			Case 0813 Locale = "Dutch (Belgium)"
			Case 0466 Locale = "Edo"
			Case 0409 Locale = "English (United States)"
			Case 0809 Locale = "English (United Kingdom)"
			Case 0c09 Locale = "English (Australia)"
			Case 2809 Locale = "English (Belize)"
			Case 1009 Locale = "English (Canada)"
			Case 2409 Locale = "English (Caribbean)"
			Case 3c09 Locale = "English (Hong Kong SAR)"
			Case 4009 Locale = "English (India)"
			Case 3809 Locale = "English (Indonesia)"
			Case 1809 Locale = "English (Ireland)"
			Case 2009 Locale = "English (Jamaica)"
			Case 4409 Locale = "English (Malaysia)"
			Case 1409 Locale = "English (New Zealand)"
			Case 3409 Locale = "English (Philippines)"
			Case 4809 Locale = "English (Singapore)"
			Case 1c09 Locale = "English (South Africa)"
			Case 2c09 Locale = "English (Trinidad)"
			Case 3009 Locale = "English (Zimbabwe)"
			Case 0425 Locale = "Estonian"
			Case 0438 Locale = "Faroese"
			Case 0429 Locale = "Farsi"
			Case 0464 Locale = "Filipino"
			Case 040b Locale = "Finnish"
			Case 040c Locale = "French (France)"
			Case 080c Locale = "French (Belgium)"
			Case 2c0c Locale = "French (Cameroon)"
			Case 0c0c Locale = "French (Canada)"
			Case 240c Locale = "French (DRC)"
			Case 300c Locale = "French (Cote d'Ivoire)"
			Case 3c0c Locale = "French (Haiti)"
			Case 140c Locale = "French (Luxembourg)"
			Case 340c Locale = "French (Mali)"
			Case 180c Locale = "French (Monaco)"
			Case 380c Locale = "French (Morocco)"
			Case e40c Locale = "French (North Africa)"
			Case 200c Locale = "French (Reunion)"
			Case 280c Locale = "French (Senegal)"
			Case 100c Locale = "French (Switzerland)"
			Case 1c0c Locale = "French (West Indies)"
			Case 0462 Locale = "Frisian (Netherlands)"
			Case 0467 Locale = "Fulfulde (Nigeria)"
			Case 042f Locale = "FYRO Macedonian"
			Case 083c Locale = "Gaelic (Ireland)"
			Case 043c Locale = "Gaelic (Scotland)"
			Case 0456 Locale = "Galician"
			Case 0437 Locale = "Georgian"
			Case 0407 Locale = "German (Germany)"
			Case 0c07 Locale = "German (Austria)"
			Case 1407 Locale = "German (Liechtenstein)"
			Case 1007 Locale = "German (Luxembourg)"
			Case 0807 Locale = "German (Switzerland)"
			Case 0408 Locale = "Greek"
			Case 0474 Locale = "Guarani (Paraguay)"
			Case 0447 Locale = "Gujarati"
			Case 0468 Locale = "Hausa (Nigeria)"
			Case 0475 Locale = "Hawaiian (United States)"
			Case 040d Locale = "Hebrew"
			Case 0439 Locale = "Hindi"
			' Case 040e Locale = "Hungarian"
			Case 0469 Locale = "Ibibio (Nigeria)"
			Case 040f Locale = "Icelandic"
			Case 0470 Locale = "Igbo (Nigeria)"
			Case 0421 Locale = "Indonesian"
			Case 045d Locale = "Inuktitut"
			Case 0410 Locale = "Italian (Italy)"
			Case 0810 Locale = "Italian (Switzerland)"
			Case 0411 Locale = "Japanese"
			Case 044b Locale = "Kannada"
			Case 0471 Locale = "Kanuri (Nigeria)"
			Case 0860 Locale = "Kashmiri"
			Case 0460 Locale = "Kashmiri (Arabic)"
			Case 043f Locale = "Kazakh"
			Case 0453 Locale = "Khmer"
			Case 0457 Locale = "Konkani"
			Case 0412 Locale = "Korean"
			Case 0440 Locale = "Kyrgyz (Cyrillic)"
			Case 0454 Locale = "Lao"
			Case 0476 Locale = "Latin"
			Case 0426 Locale = "Latvian"
			Case 0427 Locale = "Lithuanian"
			' Case 043e Locale = "Malay (Malaysia)"
			' Case 083e Locale = "Malay (Brunei Darussalam)"
			Case 044c Locale = "Malayalam"
			Case 043a Locale = "Maltese"
			Case 0458 Locale = "Manipuri"
			Case 0481 Locale = "Maori (New Zealand)"
			' Case 044e Locale = "Marathi"
			Case 0450 Locale = "Mongolian (Cyrillic)"
			Case 0850 Locale = "Mongolian (Mongolian)"
			Case 0461 Locale = "Nepali"
			Case 0861 Locale = "Nepali (India)"
			Case 0414 Locale = "Norwegian (Bokmål)"
			Case 0814 Locale = "Norwegian (Nynorsk)"
			Case 0448 Locale = "Oriya"
			Case 0472 Locale = "Oromo"
			Case 0479 Locale = "Papiamentu"
			Case 0463 Locale = "Pashto"
			Case 0415 Locale = "Polish"
			Case 0416 Locale = "Portuguese (Brazil)"
			Case 0816 Locale = "Portuguese (Portugal)"
			Case 0446 Locale = "Punjabi"
			Case 0846 Locale = "Punjabi (Pakistan)"
			Case 046B Locale = "Quecha (Bolivia)"
			Case 086B Locale = "Quecha (Ecuador)"
			Case 0C6B Locale = "Quecha (Peru)"
			Case 0417 Locale = "Rhaeto-Romanic"
			Case 0418 Locale = "Romanian"
			Case 0818 Locale = "Romanian (Moldava)"
			Case 0419 Locale = "Russian"
			Case 0819 Locale = "Russian (Moldava)"
			Case 043b Locale = "Sami (Lappish)"
			Case 044f Locale = "Sanskrit"
			Case 046c Locale = "Sepedi"
			Case 0c1a Locale = "Serbian (Cyrillic)"
			Case 081a Locale = "Serbian (Latin)"
			Case 0459 Locale = "Sindhi (India)"
			Case 0859 Locale = "Sindhi (Pakistan)"
			Case 045b Locale = "Sinhalese (Sri Lanka)"
			Case 041b Locale = "Slovak"
			Case 0424 Locale = "Slovenian"
			Case 0477 Locale = "Somali"
			' Case 042e Locale = "Sorbian"
			Case 0c0a Locale = "Spanish (Spain - Modern Sort)"
			Case 040a Locale = "Spanish (Spain - Traditional Sort)"
			Case 2c0a Locale = "Spanish (Argentina)"
			Case 400a Locale = "Spanish (Bolivia)"
			Case 340a Locale = "Spanish (Chile)"
			Case 240a Locale = "Spanish (Colombia)"
			Case 140a Locale = "Spanish (Costa Rica)"
			Case 1c0a Locale = "Spanish (Dominican Republic)"
			Case 300a Locale = "Spanish (Ecuador)"
			Case 440a Locale = "Spanish (El Salvador)"
			Case 100a Locale = "Spanish (Guatemala)"
			Case 480a Locale = "Spanish (Honduras)"
			Case 580a Locale = "Spanish (Latin America)"
			Case 080a Locale = "Spanish (Mexico)"
			Case 4c0a Locale = "Spanish (Nicaragua)"
			Case 180a Locale = "Spanish (Panama)"
			Case 3c0a Locale = "Spanish (Paraguay)"
			Case 280a Locale = "Spanish (Peru)"
			Case 500a Locale = "Spanish (Puerto Rico)"
			Case 540a Locale = "Spanish (United States)"
			Case 380a Locale = "Spanish (Uruguay)"
			Case 200a Locale = "Spanish (Venezuela)"
			Case 0430 Locale = "Sutu"
			Case 0441 Locale = "Swahili"
			Case 041d Locale = "Swedish"
			Case 081d Locale = "Swedish (Finland)"
			Case 045a Locale = "Syriac"
			Case 0428 Locale = "Tajik"
			Case 045f Locale = "Tamazight (Arabic)"
			Case 085f Locale = "Tamazight (Latin)"
			Case 0449 Locale = "Tamil"
			Case 0444 Locale = "Tatar"
			Case 044a Locale = "Telugu"
			' Case 041e Locale = "Thai"
			Case 0851 Locale = "Tibetan (Bhutan)"
			Case 0451 Locale = "Tibetan (PRC)"
			Case 0873 Locale = "Tigrigna (Eritrea)"
			Case 0473 Locale = "Tigrigna (Ethiopia)"
			Case 0431 Locale = "Tsonga"
			Case 0432 Locale = "Tswana"
			Case 041f Locale = "Turkish"
			Case 0442 Locale = "Turkmen"
			Case 0480 Locale = "Uighur (China)"
			Case 0422 Locale = "Ukrainian"
			Case 0420 Locale = "Urdu"
			Case 0820 Locale = "Urdu (India)"
			Case 0843 Locale = "Uzbek (Cyrillic)"
			Case 0443 Locale = "Uzbek (Latin)"
			Case 0433 Locale = "Venda"
			Case 042a Locale = "Vietnamese"
			Case 0452 Locale = "Welsh"
			Case 0434 Locale = "Xhosa"
			Case 0478 Locale = "Yi"
			Case 043d Locale = "Yiddish"
			Case 046a Locale = "Yoruba"
			Case 0435 Locale = "Zulu"
			Case 04ff Locale = "HID (Human Interface Device)"
			Case Else
			Locale = "Could Not Determine OS Locale"
		End Select


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_OperatingSystem class:

		Caption = objOSItem.Caption
		CSDVersion = objOSItem.CSDVersion
		CSName = objOSItem.CSName
		Version = objOSItem.Version
		BuildType = objOSItem.BuildType
		BuildNumber = objOSItem.BuildNumber
		SerialNumber = objOSItem.SerialNumber

		objSWbemDateTime.Value = objOSItem.InstallDate
		InstallDate = objSWbemDateTime.GetVarDate(True)

		objSWbemDateTime.Value = objOSItem.LastBootUpTime
		LastBootUpTime = objSWbemDateTime.GetVarDate(True)

		Status = objOSItem.Status
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_ComputerSystem class:

	For Each objCompSysItem in colCompSysItems
		CurrentTimeZone = objCompSysItem.CurrentTimeZone
		DaylightInEffect = objCompSysItem.DaylightInEffect
		TotalMemory = FormatNumber(objCompSysItem.TotalPhysicalMemory/1024^3, 2)
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_TimeZone class:

	For Each objTZItem in colTZItems
		TZName = objTZItem.StandardName
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_ComputerSystemProduct class:

	For Each objCompSysProdItem in colCompSysProdItems
		CompSysName = objCompSysProdItem.Name
		IdentifyingNumber = objCompSysProdItem.IdentifyingNumber
		UUID = objCompSysProdItem.UUID
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_BIOS class:

	For Each objBIOSItem in colBIOSItems
		SMBIOSVersion = objBIOSItem.SMBIOSBIOSVersion
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Start echoing output to the screen

	Wscript.Echo "	 ------------------------------------------"
	Wscript.Echo "				   System Details"
	Wscript.Echo "	 ------------------------------------------"
	Wscript.Echo ""
	Wscript.Echo "	 Computer Name:		" & CSName
	Wscript.Echo ""
	Wscript.Echo ""
	Wscript.Echo "	 Operating System Information:"
	Wscript.Echo "	 ============================="
	Wscript.Echo "	 Operating System:	 " & Caption & Arch
	Wscript.Echo "	 Version:			   " & Version & " " & Sku & " " & CSDVersion
	Wscript.Echo "	 Build Type:			" & BuildType
	Wscript.Echo "	 Locale:				" & Locale
	Wscript.Echo "	 Serial Number:		 " & SerialNumber
	Wscript.Echo ""
	Wscript.Echo "	 Current Time Zone:	 " & TZName
	Wscript.Echo "	 Offset from UTC:	   " & CurrentTimeZone/60 & " hours"
	Wscript.Echo "	 DST In Effect:		 " & DaylightInEffect
	Wscript.Echo ""
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Get the product keys (function at the end of script):

GetKeys()

	Wscript.Echo ""
	Wscript.Echo "	 Install Date:		  " & InstallDate
	Wscript.Echo "	 Last Boot Time:		" & LastBootUpTime
	Wscript.Echo "	 Local Date/Time:	   " & Now()
	Wscript.Echo ""
	Wscript.Echo "	 System Status:		 " & Status
	Wscript.Echo ""
	Wscript.Echo ""
	Wscript.Echo "	 Hardware Information:"
	Wscript.Echo "	 ====================="


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set and echo variables gathered from Win32_Processor class:

	For Each objProcItem in colProcItems
		Select Case objProcItem.Architecture
			Case 0 CPUArch = "x86"
			Case 1 CPUArch = "MIPS"
			Case 2 CPUArch = "Alpha"
			Case 3 CPUArch = "PowerPC"
			Case 6 CPUArch = "Itanium"
			Case 9 CPUArch = "x64"
			Case Else
			CPUArch = "Could Not Determine CPU Architecture"
		End Select
	Wscript.Echo "	 CPU:				  " & objProcItem.Name & " (" & CPUArch & ")"
	Next
	Wscript.Echo ""
	Wscript.Echo "	 Physical Memory:	  " & TotalMemory & " GB"
	Wscript.Echo ""


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_VideoController class:

	For Each objVideoItem in colVideoItems
		Wscript.Echo "	 Video Card:		   " & objVideoItem.Name

		If Not objVideoItem.AdapterDACType = "" Then
			Wscript.Echo "	 Adapter DAC:		   " & objVideoItem.AdapterDACType
		End if

		Wscript.Echo "	 PNP Device ID:		 " & objVideoItem.PNPDeviceID

		If Not objVideoItem.AdapterRAM = "" Then
			Wscript.Echo "	 Video RAM:			 " & objVideoItem.AdapterRAM/1024^2 & " MB"
		End If

		Wscript.Echo "	 Driver Version:		" & objVideoItem.DriverVersion

		objSWbemDateTime.Value = objVideoItem.DriverDate
		DriverDate = objSWbemDateTime.GetVarDate(False)
		Wscript.Echo "	 Driver Date:		   " & DriverDate

		Wscript.Echo ""
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_SoundDevice class:

	For Each objSoundItem in colSoundItems
		Wscript.Echo "	 Sound Card:		   " & objSoundItem.Name
		Wscript.Echo "	 Manufacturer:		  " & objSoundItem.Manufacturer
		Wscript.Echo "	 PNP Device ID:		 " & objSoundItem.PNPDeviceID
		Wscript.Echo ""
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_LogicalDisk class:

	For Each objDiskItem in colDiskItems
		If objDiskItem.DriveType = 3 Then
			Wscript.Echo "	 Volume:			   " & objDiskItem.Caption
			Wscript.Echo "	 Compressed:			" & objDiskItem.Compressed
			Wscript.Echo "	 File System:		   " & objDiskItem.FileSystem
			Wscript.Echo "	 Volume Size:		   " & FormatNumber(objDiskItem.Size/1024^3, 2) & " GB"
			Wscript.Echo "	 Free Space:			" & FormatNumber(objDiskItem.FreeSpace/1024^3, 2) & " GB"
			Wscript.Echo ""
		End If
	Next


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Set variables gathered from Win32_NetworkAdapterConfiguration class:

	For Each objNetAdapConfigItem in colNetAdapConfigItems
		If isNull(objNetAdapConfigItem.IPAddress) Then
			'// Skip adapter, not currently used
		Else
			Wscript.Echo "	 Network Adapter:	  " & objNetAdapConfigItem.Description
			Wscript.Echo "	 MAC Address:		   " & objNetAdapConfigItem.MACAddress
			Wscript.Echo "	 DHCP Enabled:		  " & objNetAdapConfigItem.DHCPEnabled
			Wscript.Echo "	 IP Address:			" & Join(objNetAdapConfigItem.IPAddress, ",")
			Wscript.Echo "	 Subnet Mask:		   " & Join(objNetAdapConfigItem.IPSubnet, ",")
			Wscript.Echo "	 Default Gateway:	   " & Join(objNetAdapConfigItem.DefaultIPGateway, ",")
			If objNetAdapConfigItem.DHCPEnabled = True Then

				objSWbemDateTime.Value = objNetAdapConfigItem.DHCPLeaseObtained
				DHCPLeaseObtained = objSWbemDateTime.GetVarDate(True)
				Wscript.Echo "	 Lease Obtained:		" & DHCPLeaseObtained

				objSWbemDateTime.Value = objNetAdapConfigItem.DHCPLeaseExpires
				DHCPLeaseExpires = objSWbemDateTime.GetVarDate(True)
				Wscript.Echo "	 Lease Exipres:		 " & DHCPLeaseExpires

				Wscript.Echo "	 DHCP Servers:		  " & objNetAdapConfigItem.DHCPServer
			End If
			Wscript.Echo "	 DNS Server:			" & Join(objNetAdapConfigItem.DNSServerSearchOrder, ",")
			If Not objNetAdapConfigItem.WINSPrimaryServer = "" Then
				Wscript.Echo "	 WINS Primary Server:   " & objNetAdapConfigItem.WINSPrimaryServer
				If Not objNetAdapConfigItem.WINSSecondaryServer = "" Then
					Wscript.Echo "	 WINS Secondary Server: " & objNetAdapConfigItem.WINSPrimaryServer
				End If
				Wscript.Echo "	 Enable LMHosts Lookup: " & objNetAdapConfigItem.WINSEnableLMHostsLookup
			End If
			Wscript.Echo ""
		End If
	Next
	Wscript.Echo ""
	Wscript.Echo "	 System Information:"
	Wscript.Echo "	 ==================="
	Wscript.Echo "	 Computer:			 " & CompSysName
	Wscript.Echo "	 Serial Number:		 " & IdentifyingNumber
	Wscript.Echo "	 BIOS Version:		  " & SMBIOSVersion
	Wscript.Echo "	 UUID:				  " & UUID
	Wscript.Echo ""


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// This pause call is disabled, but you may wish to enable it if running this script
'// with the ElevateThisScript() subroutine call enabled above:

' PressEnter()


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Functions: GetKeys() and decodeKey(iValues, strProduct)
'//
'// Credit where credit is due - I found and modified script posted by user "Parabellum"
'// found on http://www.visualbasicscript.com/m42793.aspx, hacked it up a bit, and used
'// it here to post keys:

Public Function GetKeys()

	For x = LBound(arrSubKeys, 1) To UBound(arrSubKeys, 1)
	objReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes

		If Not IsNull(arrDPIDBytes) Then
			Call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
		Else
			objReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys

			If Not IsNull(arrGUIDKeys) Then
				For Each GUIDKey In arrGUIDKeys
					objReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) & "\" & GUIDKey, SEARCH_KEY, arrDPIDBytes
		
					If Not IsNull(arrDPIDBytes) Then
						Call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
					End If
				Next
			End If
		End If
	Next

End Function


	Public Function decodeKey(iValues, strProduct)

		Dim arrDPID
		arrDPID = Array()

			For i = 52 to 66
				ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
				arrDPID( UBound(arrDPID) ) = iValues(i)
			Next

		Dim arrChars
		arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")

			For i = 24 To 0 Step -1
				k = 0
		
				For j = 14 To 0 Step -1
					k = k * 256 Xor arrDPID(j)
					arrDPID(j) = Int(k / 24)
					k = k Mod 24
				Next
		
				strProductKey = arrChars(k) & strProductKey
		
				If i Mod 5 = 0 And i <> 0 Then
					strProductKey = "-" & strProductKey
				End If
			Next
	
		ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
		foundKeys( UBound(foundKeys) ) = strProductKey
		strKey = UBound(foundKeys)
		Wscript.Echo "	 " & strProduct & "" & foundKeys(strKey)
	End Function


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Subroutine: PressEnter()
'//
'// Adds a pause with a "Press the ENTER key to continue." message when called.
'//
'// Usage:  Call this Subroutine to get a pause that will clear when the user presses the
'// ENTER key (and ONLY the ENTER key) on their keyboard:

Sub PressEnter()
	Wscript.Echo ""
	strMessage = "Press the ENTER key to continue. "
	Wscript.StdOut.Write strMessage

	Do While Not WScript.StdIn.AtEndOfLine
		Input = WScript.StdIn.Read(1)
	Loop
End Sub


'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'//
'// Subroutine: ElevateThisScript()
'//
'// Forces the currently running script to prompt for elevation if it detects that the
'// current user credentials do not have administrative privileges.
'//
'// If run on Windows XP / Server 2003 this script will cause the RunAs dialog to appear
'// if the user does not have administrative rights, giving the opportunity to run as an
'// administrator.
'//
'// If run on Windows Vista / Server 2008 this script will cause a UAC dialog to appear
'// if the user does not have administrative rights and UAC is enabled, giving the
'// opportunity for the script to run properly for a LUA user.
'//
'// This Sub Attempts to call the script with its original arguments.  Arguments that
'// contain a space will be wrapped in double quotes when the script calls itself again.
'//
'// Usage:  Add a call to this sub (ElevateThisScript) to the beginning of your script to
'// ensure that the script gets an administrative token.

Sub ElevateThisScript()

	Const HKEY_CLASSES_ROOT  = &H80000000
	Const HKEY_CURRENT_USER  = &H80000001
	Const HKEY_LOCAL_MACHINE = &H80000002
	Const HKEY_USERS		 = &H80000003
	const KEY_QUERY_VALUE	  = 1
	Const KEY_SET_VALUE		  = 2

	Dim scriptEngine, engineFolder, argString, arg, Args, scriptCommand
	Dim objShellApp : Set objShellApp = CreateObject("Shell.Application")

	scriptEngine = Ucase(Mid(Wscript.FullName,InstrRev(Wscript.FullName,"\")+1))
	engineFolder = Left(Wscript.FullName,InstrRev(Wscript.FullName,"\"))
	argString = ""

	Set Args = Wscript.Arguments

	For each arg in Args						'loop though argument array as a collection to rebuild argument string
		If instr(arg," ") > 0 Then arg = """" & arg & """"	'if the argument contains a space wrap it in double quotes
		argString = argString & " " & Arg
	Next

	scriptCommand = engineFolder & scriptEngine

	Dim strComputer : strComputer = "."

	Dim objReg, bHasAccessRight
	Set objReg=GetObject("winmgmts:"_
		& "{impersonationLevel=impersonate}!\\" &_
		strComputer & "\root\default:StdRegProv")

	'Check for administrative registry access rights
	objReg.CheckAccess HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Control\CrashControl", _
		KEY_SET_VALUE, bHasAccessRight

	If bHasAccessRight = True Then

		HasRequiredRegAccess = True
		Exit Sub

	Else

		HasRequiredRegAccess = False
		objShellApp.ShellExecute scriptCommand, " """ & Wscript.ScriptFullName & """" & argString, "", "runas"
		WScript.Quit
	End If
End Sub

MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!

#24
MagicAndre1981

MagicAndre1981

    after Windows 7 GA still Vista lover :)

  • Patrons
  • 6,031 posts
  • Joined 28-August 05
  • OS:Vista Ultimate x86
  • Country: Country Flag

Donator

I'm getting a RuntimeError in your script.

osinfo.vbs(543, 13) Laufzeitfehler in Microsoft vb script: Typen unverträglich: 'FormatNumber'


Which means, type mismatch.
Posted Image

#25
cluberti

cluberti

    Gustatus similis pullus

  • Supervisor
  • 11,252 posts
  • Joined 09-September 01
  • OS:Windows 8.1 x64
  • Country: Country Flag
It's probably the caret on this line:
Wscript.Echo "	 Volume Size:		   " & FormatNumber(objDiskItem.Size/1024^3, 2) & " GB"

Try this instead:
Wscript.Echo "	 Volume Size:		   " & FormatNumber(objDiskItem.Size/1024/1024/1024, 2) & " GB"

If that isn't it, then you likely have a volume returning NULL for the Size parameter of the class, and since I'm checking fixed disks only (type = 3) that would be very odd indeed. However, the only other reason (if your system isn't liking the caret) would be volume.size of this class returning a NULL.
MCTS Windows Internals, MCITP Server 2008 EA, MCTS MDT/BDD, MCSE/MCSA Server 2003, Server 2012, Windows 8
--------------------
Please read the rules before posting!
Please consider donating to MSFN to keep it up and running!




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users



How to remove advertisement from MSFN