<?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=WMI_Macro</id>
	<title>WMI Macro - 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=WMI_Macro"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=WMI_Macro&amp;action=history"/>
	<updated>2026-04-23T19:40:54Z</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=WMI_Macro&amp;diff=18060&amp;oldid=prev</id>
		<title>Zinthose: Initial Release</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=WMI_Macro&amp;diff=18060&amp;oldid=prev"/>
		<updated>2010-01-26T23:38:27Z</updated>

		<summary type="html">&lt;p&gt;Initial Release&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{PageAuthor|Zinthose}}&lt;br /&gt;
== About ==&lt;br /&gt;
Macro that uses the nsExec::ExecToStack plugin to execute the WMIC command line utility to easily collect WMI data.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;    ${WMIC} $0 ComputerSystem Model&lt;br /&gt;
    ${WMIC} $1 ComputerSystem Manufacturer&lt;br /&gt;
    &lt;br /&gt;
    DetailPrint `Model: $0`&lt;br /&gt;
    DetailPrint `Manufacturer: $1`&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Macro ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;/*  Macro to remove leading and trailing white spaces from a string.&lt;br /&gt;
    Derived from the function originally posted by Iceman_K at: &lt;br /&gt;
    http://nsis.sourceforge.net/Remove_leading_and_trailing_whitespaces_from_a_string&lt;br /&gt;
    --------------------------------------------------------------------------------- */&lt;br /&gt;
        !ifmacrondef _Trim&lt;br /&gt;
            !macro _Trim _UserVar _OriginalString&lt;br /&gt;
                !define Trim_UID ${__LINE__}&lt;br /&gt;
                &lt;br /&gt;
                Push $R1&lt;br /&gt;
                Push $R2&lt;br /&gt;
                Push `${_OriginalString}`&lt;br /&gt;
                Pop $R1&lt;br /&gt;
                &lt;br /&gt;
                Loop_${Trim_UID}:&lt;br /&gt;
                    StrCpy $R2 &amp;quot;$R1&amp;quot; 1&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot; &amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\r&amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\n&amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\t&amp;quot; TrimLeft_${Trim_UID}&lt;br /&gt;
                    GoTo Loop2_${Trim_UID}&lt;br /&gt;
                TrimLeft_${Trim_UID}:   &lt;br /&gt;
                    StrCpy $R1 &amp;quot;$R1&amp;quot; &amp;quot;&amp;quot; 1&lt;br /&gt;
                    Goto Loop_${Trim_UID}&lt;br /&gt;
             &lt;br /&gt;
                Loop2_${Trim_UID}:&lt;br /&gt;
                    StrCpy $R2 &amp;quot;$R1&amp;quot; 1 -1&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot; &amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\r&amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\n&amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    StrCmp &amp;quot;$R2&amp;quot; &amp;quot;$\t&amp;quot; TrimRight_${Trim_UID}&lt;br /&gt;
                    GoTo Done_${Trim_UID}&lt;br /&gt;
                TrimRight_${Trim_UID}:  &lt;br /&gt;
                    StrCpy $R1 &amp;quot;$R1&amp;quot; -1&lt;br /&gt;
                    Goto Loop2_${Trim_UID}&lt;br /&gt;
                 &lt;br /&gt;
                Done_${Trim_UID}:&lt;br /&gt;
                    Pop $R2&lt;br /&gt;
                    Exch $R1&lt;br /&gt;
                    Pop ${_UserVar}&lt;br /&gt;
                !undef Trim_UID&lt;br /&gt;
            !macroend&lt;br /&gt;
            !ifndef Trim&lt;br /&gt;
                !define Trim `!insertmacro _Trim`&lt;br /&gt;
            !endif&lt;br /&gt;
        !endif&lt;br /&gt;
&lt;br /&gt;
/*  WMIC - Retrieves a single property value from a WMI Class&lt;br /&gt;
    --------------------------------------------------------- */&lt;br /&gt;
    !ifmacrondef _WMIC&lt;br /&gt;
        !macro _WMIC _USERVAR _CLASSNAME _PROPERTY&lt;br /&gt;
            !define WMIC_UID ${__LINE__}&lt;br /&gt;
            ClearErrors&lt;br /&gt;
            &lt;br /&gt;
            Push $0&lt;br /&gt;
            Push $1&lt;br /&gt;
            Push $2&lt;br /&gt;
            &lt;br /&gt;
            Push ${_USERVAR}&lt;br /&gt;
            Push ${_CLASSNAME}&lt;br /&gt;
            Push ${_PROPERTY}&lt;br /&gt;
            &lt;br /&gt;
            Pop $2 ; _PROPERTY&lt;br /&gt;
            Pop $1 ; _CLASSNAME&lt;br /&gt;
            Pop $0 ; _USERVAR&lt;br /&gt;
            &lt;br /&gt;
            nsExec::ExecToStack /OEM &amp;#039;WMIC $1 Get $2 /FORMAT:textvaluelist.xsl&amp;#039;&lt;br /&gt;
            Pop $0&lt;br /&gt;
            &lt;br /&gt;
            StrCmp $0 0 0 Else_${WMIC_UID}&lt;br /&gt;
                Pop $0&lt;br /&gt;
                ${Trim} $0 $0&lt;br /&gt;
                StrLen $1 $2&lt;br /&gt;
                IntOp $1 $1 + 1&lt;br /&gt;
                StrCpy $0 $0 ${NSIS_MAX_STRLEN} $1&lt;br /&gt;
                Goto End_${WMIC_UID}&lt;br /&gt;
            Else_${WMIC_UID}:&lt;br /&gt;
                SetErrors&lt;br /&gt;
                StrCpy $0 &amp;quot;&amp;quot;&lt;br /&gt;
            End_${WMIC_UID}:&lt;br /&gt;
            &lt;br /&gt;
            Pop  $2&lt;br /&gt;
            Pop  $1&lt;br /&gt;
            Exch $0&lt;br /&gt;
            Pop ${_USERVAR}&lt;br /&gt;
            &lt;br /&gt;
            !undef WMIC_UID&lt;br /&gt;
        !macroend&lt;br /&gt;
        !ifndef WMIC&lt;br /&gt;
            !define WMIC &amp;quot;!insertmacro _WMIC&amp;quot;&lt;br /&gt;
        !endif&lt;br /&gt;
    !endif&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
[[Category:System Related Functions]]&lt;/div&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
</feed>