<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=System_Information</id>
	<title>System Information - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=System_Information"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=System_Information&amp;action=history"/>
	<updated>2026-06-07T08:21:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=System_Information&amp;diff=25811&amp;oldid=prev</id>
		<title>Anders: Corrected Server 2022 build#</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=System_Information&amp;diff=25811&amp;oldid=prev"/>
		<updated>2022-09-30T12:04:29Z</updated>

		<summary type="html">&lt;p&gt;Corrected Server 2022 build#&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:04, 30 September 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot;&gt;Line 25:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		StrCpy ${outvar} &amp;quot;2016&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		StrCpy ${outvar} &amp;quot;2016&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		${IfThen} ${build} &amp;gt;= 17763 ${|} StrCpy ${outvar} &amp;quot;2019&amp;quot; ${|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		${IfThen} ${build} &amp;gt;= 17763 ${|} StrCpy ${outvar} &amp;quot;2019&amp;quot; ${|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		${IfThen} ${build} &amp;gt;= &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;19044 &lt;/del&gt;${|} StrCpy ${outvar} &amp;quot;2022&amp;quot; ${|} ; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TODO: Is 19044 correct?&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		${IfThen} ${build} &amp;gt;= &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;20348 &lt;/ins&gt;${|} StrCpy ${outvar} &amp;quot;2022&amp;quot; ${|} ; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;betawiki.net/wiki/Windows_Server_2022&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	${EndIf}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	${EndIf}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;${ElseIf} ${build} &amp;gt;= 9600&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;${ElseIf} ${build} &amp;gt;= 9600&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l83&quot;&gt;Line 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	System::Call &amp;#039;*$1(&amp;amp;l4,i,i,i,i,i,i,i)&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	System::Call &amp;#039;*$1(&amp;amp;l4,i,i,i,i,i,i,i)&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	System::Call &amp;#039;KERNEL32::GlobalMemoryStatus(pr1)&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	System::Call &amp;#039;KERNEL32::GlobalMemoryStatus(pr1)&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	System::Call &amp;#039;*$1(i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.r9&lt;/del&gt;,i,i.r2,i,i.r5)&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	System::Call &amp;#039;*$1(i,i,i.r2,i,i.r5)&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;${EndIf}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;${EndIf}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!endif&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!endif&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-25804:rev-25811 --&gt;
&lt;/table&gt;</summary>
		<author><name>Anders</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=System_Information&amp;diff=25804&amp;oldid=prev</id>
		<title>Anders: Created for thread 459299</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=System_Information&amp;diff=25804&amp;oldid=prev"/>
		<updated>2022-09-28T19:54:31Z</updated>

		<summary type="html">&lt;p&gt;Created for thread 459299&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{PageAuthor|Anders}}&lt;br /&gt;
&lt;br /&gt;
Gets various information about the computer using the System plug-in and the Windows API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
!macro GetWindowsShortName outvar build srv&lt;br /&gt;
!if &amp;quot;${NSIS_PTR_SIZE}&amp;quot; &amp;lt;= 4&lt;br /&gt;
!if &amp;quot;${NSIS_CHAR_SIZE}&amp;quot; &amp;lt; 2&lt;br /&gt;
${IfThen} ${build} &amp;gt;= 950 ${|} StrCpy ${outvar} &amp;quot;95&amp;quot; ${|}&lt;br /&gt;
!endif&lt;br /&gt;
${IfThen} ${build} &amp;gt;= 1381 ${|} StrCpy ${outvar} &amp;quot;NT4&amp;quot; ${|}&lt;br /&gt;
!if &amp;quot;${NSIS_CHAR_SIZE}&amp;quot; &amp;lt; 2&lt;br /&gt;
${IfThen} ${build} &amp;gt;= 1998 ${|} StrCpy ${outvar} &amp;quot;98&amp;quot; ${|}&lt;br /&gt;
${IfThen} ${build} &amp;gt;= 2222 ${|} StrCpy ${outvar} &amp;quot;98 SE&amp;quot; ${|}&lt;br /&gt;
!endif&lt;br /&gt;
!endif&lt;br /&gt;
${If} ${build} = 2195&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;2000&amp;quot; /*&amp;quot;2000 Professional&amp;quot;&lt;br /&gt;
	${IfThen} ${srv} &amp;lt;&amp;gt; 0 ${|} StrCpy ${outvar} &amp;quot;2000 Server&amp;quot; ${|}*/&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 22000&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;11&amp;quot;&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 9999 ; 10240&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;10&amp;quot;&lt;br /&gt;
	${If} ${srv} &amp;lt;&amp;gt; 0&lt;br /&gt;
		StrCpy ${outvar} &amp;quot;2016&amp;quot;&lt;br /&gt;
		${IfThen} ${build} &amp;gt;= 17763 ${|} StrCpy ${outvar} &amp;quot;2019&amp;quot; ${|}&lt;br /&gt;
		${IfThen} ${build} &amp;gt;= 19044 ${|} StrCpy ${outvar} &amp;quot;2022&amp;quot; ${|} ; TODO: Is 19044 correct?&lt;br /&gt;
	${EndIf}&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 9600&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;8.1&amp;quot;&lt;br /&gt;
	${IfThen} ${srv} &amp;lt;&amp;gt; 0 ${|} StrCpy ${outvar} &amp;quot;2012 R2&amp;quot; ${|}&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 9200&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;8&amp;quot;&lt;br /&gt;
	${IfThen} ${srv} &amp;lt;&amp;gt; 0 ${|} StrCpy ${outvar} &amp;quot;2012&amp;quot; ${|}&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 7600&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;7&amp;quot;&lt;br /&gt;
	${IfThen} ${srv} &amp;lt;&amp;gt; 0 ${|} StrCpy ${outvar} &amp;quot;2008 R2&amp;quot; ${|}&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 6000&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;Vista&amp;quot;&lt;br /&gt;
	${IfThen} ${srv} &amp;lt;&amp;gt; 0 ${|} StrCpy ${outvar} &amp;quot;2008&amp;quot; ${|}&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 3790&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;2003&amp;quot; ; TODO: IsWin2003R2&lt;br /&gt;
	${IfThen} ${srv} = 0 ${|} StrCpy ${outvar} &amp;quot;XP&amp;quot; ${|} ; XPx64&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 2600&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;XP&amp;quot;&lt;br /&gt;
!if &amp;quot;${NSIS_PTR_SIZE}&amp;quot; &amp;lt;= 4&lt;br /&gt;
!if &amp;quot;${NSIS_CHAR_SIZE}&amp;quot; &amp;lt; 2&lt;br /&gt;
${ElseIf} ${build} &amp;gt;= 3000&lt;br /&gt;
	StrCpy ${outvar} &amp;quot;ME&amp;quot;&lt;br /&gt;
!endif&lt;br /&gt;
!endif&lt;br /&gt;
${EndIf}&lt;br /&gt;
!macroend&lt;br /&gt;
&lt;br /&gt;
Name &amp;quot;System Information&amp;quot;&lt;br /&gt;
Caption &amp;quot;$(^Name)&amp;quot;&lt;br /&gt;
RequestExecutionLevel User&lt;br /&gt;
Icon &amp;quot;res://$%WINDIR%/system32/TaskMgr.exe/#Icon/#30651&amp;quot;&lt;br /&gt;
!include LogicLib.nsh&lt;br /&gt;
!include WinVer.nsh&lt;br /&gt;
!include x64.nsh&lt;br /&gt;
&lt;br /&gt;
Section&lt;br /&gt;
&lt;br /&gt;
${WinVerGetBuild} $1&lt;br /&gt;
StrCpy $2 0&lt;br /&gt;
${IfThen} ${IsServerOS}  ${|} StrCpy $2 1 ${|}&lt;br /&gt;
StrCpy $0 &amp;quot;&amp;quot;&lt;br /&gt;
!insertmacro GetWindowsShortName $0 $1 $2&lt;br /&gt;
!if &amp;quot;${NSIS_PTR_SIZE}&amp;quot; &amp;gt; 4&lt;br /&gt;
	StrCpy $3 64&lt;br /&gt;
!else&lt;br /&gt;
	StrCpy $3 32&lt;br /&gt;
	${IfThen} ${RunningX64}  ${|} StrCpy $3 64 ${|}&lt;br /&gt;
!endif&lt;br /&gt;
${IfThen} $0 != &amp;quot;&amp;quot; ${|} DetailPrint &amp;quot;Windows $0 ($3-bit)&amp;quot; ${|}&lt;br /&gt;
&lt;br /&gt;
System::Call &amp;#039;*(&amp;amp;l4,i,l,l,l,l,l,l,l)p.r1&amp;#039;&lt;br /&gt;
System::Call &amp;#039;KERNEL32::GlobalMemoryStatusEx(pr1)i.r0&amp;#039; ; 2000+&lt;br /&gt;
System::Call &amp;#039;*$1(i,i,l.r2,l,l.r5)&amp;#039;&lt;br /&gt;
!if &amp;quot;${NSIS_PTR_SIZE}&amp;quot; &amp;lt;= 4&lt;br /&gt;
${If} $0 = 0&lt;br /&gt;
	System::Call &amp;#039;*$1(&amp;amp;l4,i,i,i,i,i,i,i)&amp;#039;&lt;br /&gt;
	System::Call &amp;#039;KERNEL32::GlobalMemoryStatus(pr1)&amp;#039;&lt;br /&gt;
	System::Call &amp;#039;*$1(i.r9,i,i.r2,i,i.r5)&amp;#039;&lt;br /&gt;
${EndIf}&lt;br /&gt;
!endif&lt;br /&gt;
System::Free $1&lt;br /&gt;
System::Int64Op $2 / 0x100000&lt;br /&gt;
Pop $4&lt;br /&gt;
IntOp $3 $4 % 1024&lt;br /&gt;
StrCpy $3 $3 1&lt;br /&gt;
IntOp $2 $4 / 1024&lt;br /&gt;
DetailPrint &amp;quot;Physical RAM: $2.$3 GiB ($4 MiB)&amp;quot;&lt;br /&gt;
System::Int64Op $5 / 0x100000&lt;br /&gt;
Pop $4&lt;br /&gt;
IntOp $3 $4 % 1024&lt;br /&gt;
StrCpy $3 $3 1&lt;br /&gt;
IntOp $2 $4 / 1024&lt;br /&gt;
DetailPrint &amp;quot;Total Memory: $2.$3 GiB ($4 MiB)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
System::Call &amp;#039;KERNEL32::GetActiveProcessorCount(i0xffff)i.r1&amp;#039; ; 7+&lt;br /&gt;
${If} $1 = 0&lt;br /&gt;
	System::Call &amp;#039;KERNEL32::GetSystemInfo(@r1)&amp;#039;&lt;br /&gt;
	System::Call &amp;#039;*$1(i,i,p,p,p,i.r1)&amp;#039;&lt;br /&gt;
${EndIf}&lt;br /&gt;
DetailPrint &amp;quot;Logical CPU cores: $1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
System::Call &amp;#039;USER32::GetSystemMetrics(i0)i.r1&amp;#039;&lt;br /&gt;
System::Call &amp;#039;USER32::GetSystemMetrics(i1)i.r2&amp;#039;&lt;br /&gt;
System::Call &amp;#039;USER32::GetSystemMetrics(i80)i.r3&amp;#039;&lt;br /&gt;
!if &amp;quot;${NSIS_PTR_SIZE}&amp;quot; &amp;lt;= 4&lt;br /&gt;
${IfThen} $3 &amp;lt; 1 ${|} StrCpy $3 &amp;quot;1&amp;quot; ${|}&lt;br /&gt;
!endif&lt;br /&gt;
DetailPrint &amp;quot;Primary monitor: $1x$2 ($3 monitor(s))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!define /IfNDef OPEN_EXISTING 3&lt;br /&gt;
!define /IfNDef FILE_FLAG_BACKUP_SEMANTICS 0x02000000&lt;br /&gt;
!define /IfNDef IOCTL_STORAGE_QUERY_PROPERTY 0x2d1400&lt;br /&gt;
!define /IfNDef PropertyStandardQuery 0&lt;br /&gt;
!define /IfNDef StorageDeviceSeekPenaltyProperty 7&lt;br /&gt;
!define /IfNDef StorageDeviceTrimProperty 8&lt;br /&gt;
System::Call &amp;#039;KERNEL32::GetLogicalDrives()i.r1&amp;#039;&lt;br /&gt;
StrCpy $2 -1&lt;br /&gt;
disks_loop:&lt;br /&gt;
IntOp $2 $2 + 1&lt;br /&gt;
${If} $2 &amp;lt; 26&lt;br /&gt;
	IntOp $3 1 &amp;lt;&amp;lt; $2&lt;br /&gt;
	${If} $1 &amp;amp; $3&lt;br /&gt;
		IntOp $3 $2 + 65&lt;br /&gt;
		IntFmt $5 &amp;quot;%c:&amp;quot; $3&lt;br /&gt;
		System::Call &amp;#039;KERNEL32::GetDiskFreeSpaceEx(t&amp;quot;$5\&amp;quot;, *l, *l, *l.r3)i.r0&amp;#039; ; Note: Not supported until Win95 OSR2.&lt;br /&gt;
		${If} $3 != 0&lt;br /&gt;
			System::Int64Op $3 / 0x100000&lt;br /&gt;
			Pop $3&lt;br /&gt;
			IntOp $4 $3 % 1024&lt;br /&gt;
			StrCpy $4 $4 1&lt;br /&gt;
			System::Int64Op $3 / 1024&lt;br /&gt;
			Pop $3&lt;br /&gt;
			System::Call &amp;#039;KERNEL32::GetVolumeInformation(t&amp;quot;$5\&amp;quot;, t, i${NSIS_MAX_STRLEN}, *i, *i, *i, t&amp;quot;&amp;quot;r6, i${NSIS_MAX_STRLEN})&amp;#039;&lt;br /&gt;
			${IfThen} $6 != &amp;quot;&amp;quot; ${|} StrCpy $6 &amp;quot;, $6&amp;quot; ${|}&lt;br /&gt;
			StrCpy $7 &amp;quot;&amp;quot; ; This is only going to work on Win7+&lt;br /&gt;
			System::Call &amp;#039;KERNEL32::CreateFile(t&amp;quot;\\.\$5&amp;quot;, i0, i7, p0, i${OPEN_EXISTING},i${FILE_FLAG_BACKUP_SEMANTICS}, p0)p.r8&amp;#039; #devblogs.microsoft.com/oldnewthing/20201023-00/?p=104395&lt;br /&gt;
			${If} $8 P&amp;lt;&amp;gt; 0&lt;br /&gt;
				System::Call &amp;#039;KERNEL32::DeviceIoControl(pr8, i${IOCTL_STORAGE_QUERY_PROPERTY}, *l${StorageDeviceSeekPenaltyProperty}, i 12, @r9, i${NSIS_MAX_STRLEN}, *i, p0)i.r0&amp;#039;&lt;br /&gt;
				System::Call &amp;#039;*$9(i,i,&amp;amp;i1.r9)&amp;#039;&lt;br /&gt;
				${If} $0 &amp;lt;&amp;gt; 0&lt;br /&gt;
				${AndIf} $9 = 0&lt;br /&gt;
					System::Call &amp;#039;KERNEL32::DeviceIoControl(pr8, i${IOCTL_STORAGE_QUERY_PROPERTY}, *l${StorageDeviceTrimProperty}, i 12, @r9, i${NSIS_MAX_STRLEN}, *i, p0)i.r0&amp;#039;&lt;br /&gt;
					System::Call &amp;#039;*$9(i,i,&amp;amp;i1.r9)&amp;#039;&lt;br /&gt;
					${If} $0 &amp;lt;&amp;gt; 0&lt;br /&gt;
					${AndIf} $9 &amp;lt;&amp;gt; 0&lt;br /&gt;
						StrCpy $7 &amp;quot; (Solid state)&amp;quot; ; While not 100% accurate, this smells like a SSD&lt;br /&gt;
					${EndIf}&lt;br /&gt;
				${EndIf}&lt;br /&gt;
				FileClose $8&lt;br /&gt;
			${EndIf}&lt;br /&gt;
			DetailPrint &amp;quot;$5 $3.$4 GiB free$6$7&amp;quot;&lt;br /&gt;
		${EndIf}&lt;br /&gt;
	${EndIf}&lt;br /&gt;
	Goto disks_loop&lt;br /&gt;
${EndIf}&lt;br /&gt;
&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output might look something like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre style=&amp;quot;background-color:#000000; color:#00EE00&amp;quot;&amp;gt;&lt;br /&gt;
Windows 10 (64-bit)&lt;br /&gt;
Physical RAM: 15.7 GiB (16136 MiB)&lt;br /&gt;
Total Memory: 19.6 GiB (20136 MiB)&lt;br /&gt;
Logical CPU cores: 8&lt;br /&gt;
Primary monitor: 1920x1080 (2 monitor(s))&lt;br /&gt;
C: 2.4 GiB free, NTFS (Solid state)&lt;br /&gt;
D: 9.7 GiB free, NTFS&lt;br /&gt;
F: 0.6 GiB free, FAT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Code Examples]]&lt;br /&gt;
[[Category:System Plugin Examples]]&lt;/div&gt;</summary>
		<author><name>Anders</name></author>
	</entry>
</feed>