Files
rappaurio-sae501_502/app/node_modules/cejs/_documents/JsDoc/symbols/src/D__USB_cgi-bin_lib_JS_OS_WMI.origin.js.html
2023-09-25 13:27:24 +02:00

1036 lines
191 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
.KEYW {color: #933;}
.COMM {color: #bbb; font-style: italic;}
.NUMB {color: #393;}
.STRN {color: #393;}
.REGX {color: #339;}
.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
</style></head><body><pre><span class='line'> 1</span> <span class="TOKN"></span><span class="WHIT">
<span class='line'> 2</span> </span><span class="COMM">/**
<span class='line'> 3</span> * @name CeL function for WMI
<span class='line'> 4</span> * @fileoverview
<span class='line'> 5</span> * 本檔案包含了 WMI 的 functions。
<span class='line'> 6</span> * @since
<span class='line'> 7</span> */</span><span class="WHIT">
<span class='line'> 8</span>
<span class='line'> 9</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">CeL</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 10</span>
<span class='line'> 11</span> </span><span class="COMM">/**
<span class='line'> 12</span> * 本 module 之 name(id)&lt;span style="text-decoration:line-through;">不設定時會從呼叫時之 path 取得&lt;/span>。
<span class='line'> 13</span> * @type String
<span class='line'> 14</span> * @constant
<span class='line'> 15</span> * @inner
<span class='line'> 16</span> * @ignore
<span class='line'> 17</span> */</span><span class="WHIT">
<span class='line'> 18</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">module_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'OS.Windows.WMI'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 19</span>
<span class='line'> 20</span> </span><span class="COMM">//===================================================</span><span class="WHIT">
<span class='line'> 21</span> </span><span class="COMM">/**
<span class='line'> 22</span> * 若欲 include 整個 module 時,需囊括之 code。
<span class='line'> 23</span> * @type Function
<span class='line'> 24</span> * @param {Function} library_namespace namespace of library
<span class='line'> 25</span> * @param load_arguments 呼叫時之 argument(s)
<span class='line'> 26</span> * @return
<span class='line'> 27</span> * @name CeL.OS.WMI
<span class='line'> 28</span> * @constant
<span class='line'> 29</span> * @inner
<span class='line'> 30</span> * @ignore
<span class='line'> 31</span> */</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">code_for_including</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">library_namespace</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">load_arguments</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 33</span>
<span class='line'> 34</span> </span><span class="COMM">/**
<span class='line'> 35</span> * null module constructor
<span class='line'> 36</span> * @class WMI 的 functions
<span class='line'> 37</span> */</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT"> </span><span class="COMM">// null module constructor</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span>
<span class='line'> 43</span> </span><span class="COMM">/**
<span class='line'> 44</span> * for JSDT: 有 prototype 才會將之當作 Class
<span class='line'> 45</span> */</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="PUNC">.</span><span class="NAME">prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span>
<span class='line'> 50</span>
<span class='line'> 51</span>
<span class='line'> 52</span>
<span class='line'> 53</span>
<span class='line'> 54</span>
<span class='line'> 55</span>
<span class='line'> 56</span> </span><span class="COMM">// WMI set ==================</span><span class="WHIT">
<span class='line'> 57</span>
<span class='line'> 58</span> </span><span class="COMM">/* 2007/5/22 23:34:43
<span class='line'> 59</span> WMI: Windows Management Instrumentation
<span class='line'> 60</span> http://www.codecomments.com/archive298-2004-5-203306.html
<span class='line'> 61</span> http://msdn2.microsoft.com/en-us/library/Aa394616
<span class='line'> 62</span> http://msdn2.microsoft.com/en-us/library/aa389290.aspx
<span class='line'> 63</span> http://msdn2.microsoft.com/en-us/library/aa389763.aspx
<span class='line'> 64</span> http://msdn2.microsoft.com/en-us/library/aa393854.aspx SWbemServices
<span class='line'> 65</span> http://msdn2.microsoft.com/en-us/library/ms525320.aspx
<span class='line'> 66</span> http://www.serverwatch.com/tutorials/article.php/1476831
<span class='line'> 67</span> http://www.serverwatch.com/tutorials/article.php/1476861
<span class='line'> 68</span> http://www.serverwatch.com/tutorials/article.php/1476871
<span class='line'> 69</span> http://www.serverwatch.com/tutorials/article.php/1476941
<span class='line'> 70</span>
<span class='line'> 71</span> string moniker:
<span class='line'> 72</span> [[/root/]cimv2:][from[.v]] [/|\\]root[/|\\]
<span class='line'> 73</span>
<span class='line'> 74</span> object moniker:
<span class='line'> 75</span> {
<span class='line'> 76</span> prefix:'WinMgmts:', // moniker prefix
<span class='line'> 77</span> security:'{impersonationLevel=impersonate}!',
<span class='line'> 78</span> computer:'.', // Computer string(localhost '.')
<span class='line'> 79</span> p:'cimv2', // '/root/' will auto added
<span class='line'> 80</span> path:'/root/cimv2', // Namespace e.g., \root\default
<span class='line'> 81</span>
<span class='line'> 82</span> from:, // select from ~
<span class='line'> 83</span> where:, // select from where ~ ** You MUST check the string yourself!! This function won't do it!
<span class='line'> 84</span> v:, // value to get
<span class='line'> 85</span> value:, // value used in moniker
<span class='line'> 86</span>
<span class='line'> 87</span> flag:48, // flag to call SWbemServices.ExecQuery Method
<span class='line'> 88</span> }
<span class='line'> 89</span>
<span class='line'> 90</span> prefix+security+computer+path+':'+from+'='+value http://msdn2.microsoft.com/en-us/library/aa389292.aspx
<span class='line'> 91</span>
<span class='line'> 92</span> TODO:
<span class='line'> 93</span> 多次呼叫最佳化
<span class='line'> 94</span> */</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="NAME">moniker</span><span class="PUNC">,</span><span class="NAME">func</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// moniker, for each do function</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="NAME">oWMIS</span><span class="PUNC">,</span><span class="NAME">_m</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="NAME">prefix</span><span class="PUNC">:</span><span class="STRN">'WinMgmts:'</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">security</span><span class="PUNC">:</span><span class="STRN">'{impersonationLevel=impersonate}!'</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">computer</span><span class="PUNC">:</span><span class="STRN">'.'</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">p</span><span class="PUNC">:</span><span class="STRN">'cimv2'</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">path</span><span class="PUNC">:</span><span class="STRN">''</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">from</span><span class="PUNC">:</span><span class="STRN">''</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">value</span><span class="PUNC">:</span><span class="STRN">''</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">v</span><span class="PUNC">:</span><span class="STRN">''</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">flag</span><span class="PUNC">:</span><span class="NUMB">48</span><span class="WHIT"> </span><span class="COMM">// 32: wbemFlagForwardOnly + 16: wbemFlagReturnImmediately</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">moniker</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT"> </span><span class="NAME">moniker</span><span class="PUNC">=</span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span>
<span class='line'>110</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">moniker</span><span class="PUNC">==</span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT"> </span><span class="COMM">// parse moniker</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT"> </span><span class="NAME">_m.from</span><span class="PUNC">=</span><span class="NAME">moniker</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT"> </span><span class="COMM">// 取得path</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">_m.from.match</span><span class="PUNC">(</span><span class="REGX">/^([^:]+):([^\/\\]*)$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="REGX">/^[\/\\]/</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">_m.path</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">_m.p</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT"> </span><span class="NAME">_m.from</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT"> </span><span class="COMM">// 取得from[.v]</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">_m.from.match</span><span class="PUNC">(</span><span class="REGX">/^([^.]+)\.(.*)$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">_m.from</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">_m.v</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">moniker</span><span class="PUNC">)</span><span class="NAME">_m</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">moniker</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span>
<span class='line'>122</span> </span><span class="WHIT"> </span><span class="COMM">// create object</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT"> </span><span class="COMM">//with(_m)alert(prefix+security+'//'+computer+(path||'/root/'+p)+(value||value===0?':'+from+'='+value:''));</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="PUNC">(</span><span class="NAME">_m</span><span class="PUNC">)</span><span class="NAME">oWMIS</span><span class="PUNC">=</span><span class="NAME">GetObject</span><span class="PUNC">(</span><span class="NAME">prefix</span><span class="PUNC">+</span><span class="NAME">security</span><span class="PUNC">+</span><span class="STRN">'//'</span><span class="PUNC">+</span><span class="NAME">computer</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">||</span><span class="STRN">'/root/'</span><span class="PUNC">+</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT"> </span><span class="COMM">//+(func||v?'':(from?':'+from+(value||value==0?'':'='+value):'')) // 有func||_m.v時無條件捨棄到後面再搞。</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">||</span><span class="NAME">value</span><span class="PUNC">===</span><span class="NUMB">0</span><span class="PUNC">?</span><span class="STRN">':'</span><span class="PUNC">+</span><span class="NAME">from</span><span class="PUNC">+</span><span class="STRN">'='</span><span class="PUNC">+</span><span class="NAME">value</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT"> </span><span class="COMM">//oLoc=new ActiveXObject("WbemScripting.SWbemLocator");oSvc=oLoc.ConnectServer(sComputer||null,"root\\default");oReg=oSvc.Get("StdRegProv"); // http://msdn.microsoft.com/library/en-us/wmisdk/wmi/swbemobject_execmethod_.asp</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT"> </span><span class="COMM">/* useless?
<span class='line'>133</span> try{
<span class='line'>134</span> with(new ActiveXObject("WbemScripting.SWbemLastError")) // Error Handling
<span class='line'>135</span> return {ProviderName:ProviderName,ParameterInfo:ParameterInfo,Operation:Operation,Description:Description};
<span class='line'>136</span> }catch(_e){throw e;}
<span class='line'>137</span> */</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">func</span><span class="PUNC">&&</span><span class="PUNC">!</span><span class="NAME">_m.from</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">oWMIS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span>
<span class='line'>141</span> </span><span class="WHIT"> </span><span class="COMM">// do search</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT"> </span><span class="COMM">// http://msdn2.microsoft.com/en-us/library/aa393866.aspx</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT"> </span><span class="NAME">oE</span><span class="PUNC">=</span><span class="NAME">oWMIS.ExecQuery</span><span class="PUNC">(</span><span class="STRN">'Select * From '</span><span class="PUNC">+</span><span class="NAME">_m.from</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">_m</span><span class="PUNC">[</span><span class="STRN">'where'</span><span class="PUNC">]</span><span class="PUNC">?</span><span class="STRN">' Where '</span><span class="PUNC">+</span><span class="NAME">_m.where</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="STRN">'WQL'</span><span class="WHIT"> </span><span class="COMM">// String that contains the query language to be used. If specified, this value must be "WQL".</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">_m.flag</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT"> </span><span class="COMM">// 程式庫未登錄。</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT"> </span><span class="COMM">// 此時 typeof oWMIS=='object'</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT"> </span><span class="NAME">popErr</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="STRN">'WMI_data: error occurred!'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT"> </span><span class="COMM">//if(438!=(e.number&0xFFFF))return;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// return {item:function(){}}; // or return a object using wbemQueryFlagPrototype</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT"> </span><span class="NAME">oE</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Enumerator</span><span class="PUNC">(</span><span class="NAME">oE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// wbemFlagForwardOnly:32+wbemFlagReturnImmediately:16</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT"> </span><span class="COMM">//if(func)for(;!oE.atEnd()&&!func(oE.item());oE.moveNext());</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">func</span><span class="PUNC">)</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">oE.atEnd</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="PUNC">!</span><span class="NAME">func</span><span class="PUNC">(</span><span class="NAME">oE.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">oE.moveNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_m.v</span><span class="PUNC">||</span><span class="NAME">_m.v</span><span class="PUNC">===</span><span class="NUMB">0</span><span class="PUNC">?</span><span class="NAME">oE.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="NAME">oE.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NAME">_m.v</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="KEYW">null</span><span class="PUNC">:</span><span class="NAME">oE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span>
<span class='line'>162</span> </span><span class="COMM">/* 用在將 WMI date 轉成 javascript date, old: WMIDateStringToDate
<span class='line'>163</span> http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0907.mspx
<span class='line'>164</span> http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug05/hey0802.mspx
<span class='line'>165</span>
<span class='line'>166</span> TODO:
<span class='line'>167</span> return ms
<span class='line'>168</span> */</span><span class="WHIT">
<span class='line'>169</span> </span><span class="NAME">WMI_data.DateStringToDate</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">t</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">=</span><span class="PUNC">(</span><span class="STRN">''</span><span class="PUNC">+</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d+)?([+ \-]\d+)?$/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT"> </span><span class="COMM">// http://msdn2.microsoft.com/en-us/library/474de325.aspx</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">?</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">4</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">5</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">6</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">7</span><span class="PUNC">]</span><span class="PUNC">*</span><span class="NUMB">1</span><span class="NAME">e3</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// locale會自己調整</span><span class="WHIT">
<span class='line'>174</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span>
<span class='line'>176</span> </span><span class="COMM">/* 用在取得 WMI object 之 property
<span class='line'>177</span> http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/other/wmi/
<span class='line'>178</span> http://msdn.microsoft.com/en-us/library/aa393741%28VS.85%29.aspx
<span class='line'>179</span> */</span><span class="WHIT">
<span class='line'>180</span> </span><span class="NAME">WMI_data.getProperties</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">is_VBA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">is_Date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Enumerator</span><span class="PUNC">(</span><span class="NAME">o.Properties_</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ph</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">oP.atEnd</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oP.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span>
<span class='line'>185</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">o.Name</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'IPAddress'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\n['</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">']\n'</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT"> </span><span class="COMM">// +(new VBArray(p)).toArray()</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.prototype.toString.call</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.prototype.toString.call</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>193</span>
<span class='line'>194</span> </span><span class="WHIT"> </span><span class="COMM">// 自動別日期</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="REGX">/^\d{14}(\.\d+)?([+ \-]\d+)?$/</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.DateStringToDate</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT"> </span><span class="COMM">// 自動別 VBA</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'unknown'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT"> </span><span class="COMM">// from VBA_to_JSA()</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">VBArray</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toArray</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT"> </span><span class="NAME">ph</span><span class="PUNC">[</span><span class="NAME">o.Name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT"> </span><span class="NAME">oP.moveNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>208</span>
<span class='line'>209</span> </span><span class="WHIT"> </span><span class="COMM">// o=[];for(p in ph)o.push(p+': '+ph[p]);sl(o.join('\n'));</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ph</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span>
<span class='line'>213</span>
<span class='line'>214</span>
<span class='line'>215</span> </span><span class="COMM">/* cause error! requires Windows 2003 DNS
<span class='line'>216</span> http://forums.devshed.com/dns-36/dns-through-wmi-in-net-140427.html
<span class='line'>217</span> http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/dns/server/
<span class='line'>218</span> http://www.113317.com/blog/article.asp?id=543
<span class='line'>219</span> http://blogs.msdn.com/mpoulson/archive/2006/05/10/594950.aspx
<span class='line'>220</span> http://www.ureader.com/message/3258511.aspx
<span class='line'>221</span> http://www.scriptinganswers.com/forum/forum_posts.asp?TID=516&PID=3124
<span class='line'>222</span> if(0){
<span class='line'>223</span> var qHost='213.22.211.in-addr.arpa',qIP=WMI_data({p:'MicrosoftDNS',from:'MicrosoftDNS_PTRType',where:"OwnerName='"+qHost+"'"}).item();
<span class='line'>224</span> alert(qIP.RecordData);
<span class='line'>225</span> }
<span class='line'>226</span> */</span><span class="WHIT">
<span class='line'>227</span>
<span class='line'>228</span>
<span class='line'>229</span>
<span class='line'>230</span>
<span class='line'>231</span> </span><span class="COMM">/*
<span class='line'>232</span> http://msdn2.microsoft.com/en-us/library/aa394239.aspx
<span class='line'>233</span> http://tech.163.com/05/0406/10/1GL8FUG200091589.html
<span class='line'>234</span>
<span class='line'>235</span> test:
<span class='line'>236</span> with(getSysInfo())alert(Caption+' '+CSDVersion+' '+OtherTypeDescription+'(SP '+ServicePackMajorVersion+'.'+ServicePackMinorVersion+') [Version '+Version+']'
<span class='line'>237</span> +'\nWindowsDirectory: '+WindowsDirectory
<span class='line'>238</span> +'\nSystemDirectory: '+SystemDirectory
<span class='line'>239</span> +'\nFreePhysicalMemory: '+turnSI(FreePhysicalMemory)+'/'+turnSI(PhysicalMemory)+'B ('+PhysicalMemory+' bytes)'
<span class='line'>240</span> +'\nOSLanguage: '+OSLanguage+' (0x'+hex(OSLanguage)+')' // http://msdn.microsoft.com/zh-tw/library/system.globalization.cultureinfo%28VS.80%29.aspx
<span class='line'>241</span> +'\nCountryCode: '+CountryCode
<span class='line'>242</span> +'\nCodeSet: CP'+CodeSet // http://en.wikipedia.org/wiki/Code_page http://msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx
<span class='line'>243</span> +'\nLocale: '+Locale
<span class='line'>244</span> +'\nCurrentTimeZone: '+gDate(CurrentTimeZone*60*1000)
<span class='line'>245</span> +'\nMUILanguages: '+MUILanguages
<span class='line'>246</span> +'\nBootUpTime: '+LastBootUpTime.toLocaleString()
<span class='line'>247</span> +'\nLocalDateTime: '+LocalDateTime.toLocaleString()
<span class='line'>248</span> +'\n系統運行 Uptime: '+gDate(Uptime)//+' ms'
<span class='line'>249</span> +'\n系統 counter: '+Timestamp+' s'
<span class='line'>250</span> +'\nCSName: '+CSName
<span class='line'>251</span> +'\nRegisteredUser: '+RegisteredUser
<span class='line'>252</span> );WScript.Quit();
<span class='line'>253</span> */</span><span class="WHIT">
<span class='line'>254</span>
<span class='line'>255</span> </span><span class="NAME">getSysInfo</span><span class="PUNC">[</span><span class="NAME">generateCode.dLK</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="STRN">'WMI_data'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getSysInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_OperatingSystem'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="NAME">r</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT"> </span><span class="NAME">Caption</span><span class="PUNC">:</span><span class="NAME">o.Caption.replace</span><span class="PUNC">(</span><span class="REGX">/\s+$/</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// 系統</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT"> </span><span class="NAME">Name</span><span class="PUNC">:</span><span class="NAME">o.Name</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT"> </span><span class="NAME">CSDVersion</span><span class="PUNC">:</span><span class="NAME">o.CSDVersion</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">ServicePackMajorVersion</span><span class="PUNC">:</span><span class="NAME">o.ServicePackMajorVersion</span><span class="PUNC">||</span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">o.ServicePackMajorVersion</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="STRN">''</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT"> </span><span class="NAME">ServicePackMinorVersion</span><span class="PUNC">:</span><span class="NAME">o.ServicePackMinorVersion</span><span class="PUNC">||</span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">o.ServicePackMinorVersion</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="STRN">''</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT"> </span><span class="NAME">OtherTypeDescription</span><span class="PUNC">:</span><span class="NAME">o.OtherTypeDescription</span><span class="PUNC">||</span><span class="STRN">''</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT"> </span><span class="NAME">Version</span><span class="PUNC">:</span><span class="NAME">o.Version</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// 系統版本</span><span class="WHIT">
<span class='line'>266</span>
<span class='line'>267</span> </span><span class="WHIT"> </span><span class="NAME">WindowsDirectory</span><span class="PUNC">:</span><span class="NAME">o.WindowsDirectory</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT"> </span><span class="NAME">SystemDirectory</span><span class="PUNC">:</span><span class="NAME">o.SystemDirectory</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>269</span>
<span class='line'>270</span> </span><span class="WHIT"> </span><span class="NAME">CSName</span><span class="PUNC">:</span><span class="NAME">o.CSName</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">RegisteredUser</span><span class="PUNC">:</span><span class="NAME">o.RegisteredUser</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>272</span>
<span class='line'>273</span> </span><span class="WHIT"> </span><span class="NAME">CurrentTimeZone</span><span class="PUNC">:</span><span class="NAME">o.CurrentTimeZone</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT"> </span><span class="COMM">// 系統最後一次啟動的時間</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT"> </span><span class="COMM">// see: WMI_data('Win32_PerfRawData_PerfOS_System.SystemUpTime')</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT"> </span><span class="NAME">LastBootUpTime</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">WMI_data.DateStringToDate</span><span class="PUNC">(</span><span class="NAME">o.LastBootUpTime</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT"> </span><span class="NAME">LocalDateTime</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">WMI_data.DateStringToDate</span><span class="PUNC">(</span><span class="NAME">o.LocalDateTime</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">OSLanguage</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">o.OSLanguage</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT"> </span><span class="NAME">CountryCode</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">o.CountryCode</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT"> </span><span class="NAME">CodeSet</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">o.CodeSet</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT"> </span><span class="NAME">Locale</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">o.Locale</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT"> </span><span class="NAME">MUILanguages</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">VBA_to_JSA</span><span class="PUNC">(</span><span class="NAME">o.MUILanguages</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>283</span>
<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">FreePhysicalMemory</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">o.FreePhysicalMemory</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">PhysicalMemory</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_PhysicalMemory'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Capacity</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>286</span>
<span class='line'>287</span> </span><span class="WHIT"> </span><span class="COMM">// ms: maybe null!</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT"> </span><span class="COMM">// http://msdn2.microsoft.com/en-us/library/aa394272.aspx</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT"> </span><span class="COMM">// http://snippets.dzone.com/posts/show/5472</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT"> </span><span class="NAME">Uptime</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_PerfRawData_PerfOS_System.Timestamp_Object'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_PerfRawData_PerfOS_System.SystemUpTime'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="NAME">e3</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_PerfRawData_PerfOS_System.Frequency_Object'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT"> </span><span class="COMM">// 顯示系統當下時間之印記 (NOT Uptime!) 這個運行時間是從性能計數器中獲得的64位整型數不會出現在49.7天後溢出的情況。</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.dx21.com/SCRIPTING/WMI/SUBCLASS.ASP?CID=201</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT"> </span><span class="COMM">// maybe NaN</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT"> </span><span class="NAME">Timestamp</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_PerfRawData_PerfOS_System.Timestamp_Sys100NS'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_PerfRawData_PerfOS_System.Frequency_Sys100NS'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT"> </span><span class="COMM">//alert(WMI_data('Win32_PerfRawData_PerfOS_System.Timestamp_Sys100NS')+'/'+WMI_data('Win32_PerfRawData_PerfOS_System.Frequency_Sys100NS'));</span><span class="WHIT">
<span class='line'>300</span>
<span class='line'>301</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">r.Uptime</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT"> </span><span class="NAME">r.Uptime</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">r.LastBootUpTime</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span>
<span class='line'>304</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span>
<span class='line'>307</span>
<span class='line'>308</span> </span><span class="COMM">/* http://support.microsoft.com/kb/328874/zh-tw
<span class='line'>309</span> http://msdn.microsoft.com/en-us/library/aa394520(VS.85).aspx
<span class='line'>310</span> http://msdn.microsoft.com/en-us/library/aa390456(VS.85).aspx http://school.21tx.com/2004/06/16/11568_4.html
<span class='line'>311</span> If this method succeeds and the ActivationRequired property is 1 (one), the method returns 0 (zero). Otherwise, the method returns one of the WMI error constants.
<span class='line'>312</span>
<span class='line'>313</span> TODO:
<span class='line'>314</span> 判別 OS
<span class='line'>315</span> */</span><span class="WHIT">
<span class='line'>316</span> </span><span class="NAME">getWinID</span><span class="PUNC">[</span><span class="NAME">generateCode.dLK</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="STRN">'WMI_data'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getWinID</span><span class="PUNC">(</span><span class="NAME">pKey</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_WindowsProductActivation'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">WshShell</span><span class="PUNC">=</span><span class="NAME">WScript.CreateObject</span><span class="PUNC">(</span><span class="STRN">"WScript.Shell"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">'getWinID: Can not get Win32_WindowsProductActivation!'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">=</span><span class="NAME">o.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">o.ActivationRequired</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT"> </span><span class="COMM">// 未啟用 Windows 前, 用錯誤序號會出錯</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">'Activation Required.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">pKey</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT"> </span><span class="COMM">// SetProductKey: 修改產品金鑰CD-KEY序號, return 0:OK, else error</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">=</span><span class="NAME">o.SetProductKey</span><span class="PUNC">(</span><span class="NAME">pKey.replace</span><span class="PUNC">(</span><span class="REGX">/[\s\-]/g</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">(</span><span class="STRN">'Update failed for ['</span><span class="PUNC">+</span><span class="NAME">pKey</span><span class="PUNC">+</span><span class="STRN">']:\n'</span><span class="PUNC">+</span><span class="NAME">e.description</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// for old version 有可能:無效的操作, 此時需 delete OOBETimer registry value</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: delete OOBETimer registry value for XP 2600: 針對非 Windows XP SP1 或較新版 Windows XP 使用,來停用 Windows。</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT"> </span><span class="COMM">//WshShell.RegDelete("HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WPAEvents\\OOBETimer");</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o.GetInstallationID</span><span class="PUNC">(</span><span class="NAME">pKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="COMM">//||pKey; // 無法以此方法獲得 ID</span><span class="WHIT">
<span class='line'>337</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>338</span>
<span class='line'>339</span> </span><span class="COMM">// ksp:</span><span class="WHIT">
<span class='line'>340</span> </span><span class="COMM">//alert(getWinID('Q9FDY-483HM-FV6RQ-2YQQQ-FD7J8'));WScript.Quit();</span><span class="WHIT">
<span class='line'>341</span>
<span class='line'>342</span> </span><span class="COMM">// NTSU</span><span class="WHIT">
<span class='line'>343</span> </span><span class="COMM">//alert(getWinID('VWPM3-MH7H6-VDDHG-YVR4Y-W38JQ'));WScript.Quit();</span><span class="WHIT">
<span class='line'>344</span> </span><span class="COMM">//alert(getWinID());</span><span class="WHIT">
<span class='line'>345</span>
<span class='line'>346</span> </span><span class="COMM">//alert(getSysInfo().Caption)</span><span class="WHIT">
<span class='line'>347</span> </span><span class="COMM">//WScript.Quit();</span><span class="WHIT">
<span class='line'>348</span>
<span class='line'>349</span> </span><span class="COMM">/*
<span class='line'>350</span> http://163.19.54.70/student/SerialNumber.txt 大量授權
<span class='line'>351</span> Windows XP Professional VWPM3-MH7H6-VDDHG-YVR4Y-W38JQ
<span class='line'>352</span> Windows XP Prof, x64 Ed. FG2Q3-QX4JG-FQMMB-8XXD6-34MRY
<span class='line'>353</span> Office XP Applications MXCVH-R3QQG-DMQ2M-KXPVQ-VKD6W
<span class='line'>354</span> Office XP Suites PCCKW-J8Y6T-P632P-9KW9P-PK88B
<span class='line'>355</span> Office 2003 Applications TF6RQ-TVG9Q-FVV74-GR4CP-2C2MB
<span class='line'>356</span> Office 2003 Suites WCMVH-XJGPJ-G9BKC-2KHY9-Y7V36
<span class='line'>357</span> Office 2007 Applications FJXGQ-RDQRY-Q2784-D89BP-M4MYJ
<span class='line'>358</span> Office 2007 Suites KX3T3-RYFP7-BMPKG-JXTQ2-9HWBJ
<span class='line'>359</span>
<span class='line'>360</span> DBXYD-TF477-46YM4-W74MH-6YDQ8 (CD)
<span class='line'>361</span> W2JJW-4KYDP-2YMKW-FX36H-QYVD8 (FILES)
<span class='line'>362</span>
<span class='line'>363</span> 'Microsoft Windows XP Professional 5.1.2600':'VWPM3-MH7H6-VDDHG-YVR4Y-W38JQ'
<span class='line'>364</span>
<span class='line'>365</span> ksp:
<span class='line'>366</span> Windows XP Professional Q9FDY-483HM-FV6RQ-2YQQQ-FD7J8
<span class='line'>367</span> Windows XP Prof, x64 Ed. V3PP8-CD446-62H9J-3XHVF-K44F3
<span class='line'>368</span> Windows Vista 的 KMS 認證方式,請參考 http://www.ks.edu.tw/KSnet_service.html#D
<span class='line'>369</span> Office XP Suites F86BJ-8PJWY-4P8QX-89FKF-896DT
<span class='line'>370</span> Office 2003 Suites F4RMR-DKBX3-2TV7F-9T8QJ-8MYQ6
<span class='line'>371</span> Office 2007 Suites M3JH3-4R8XX-R37F2-8D8H8-CBVD8
<span class='line'>372</span>
<span class='line'>373</span> 高雄市?
<span class='line'>374</span> Office 2007
<span class='line'>375</span> W3GCD-YWK98-8F6BG-2CYBY-KVWBJ
<span class='line'>376</span>
<span class='line'>377</span>
<span class='line'>378</span> 以下序號皆為 VLK 大量授權序號:
<span class='line'>379</span> HCQ9D-TVCWX-X9QRG-J4B2Y-GR2TT
<span class='line'>380</span> MRX3F-47B9T-2487J-KWKMF-RPWBY
<span class='line'>381</span> QC986-27D34-6M3TY-JJXP9-TBGMD
<span class='line'>382</span> CM3HY-26VYW-6JRYC-X66GX-JVY2D
<span class='line'>383</span> DP7CM-PD6MC-6BKXT-M8JJ6-RPXGJ
<span class='line'>384</span> F4297-RCWJP-P482C-YY23Y-XH8W3
<span class='line'>385</span> HH7VV-6P3G9-82TWK-QKJJ3-MXR96
<span class='line'>386</span>
<span class='line'>387</span>
<span class='line'>388</span>
<span class='line'>389</span> Windows XP Home Edition
<span class='line'>390</span> x:
<span class='line'>391</span> BQFBV-9J43J-663WJ-T2VDY-X86HY
<span class='line'>392</span> VTDBB-QVPCJ-33J2V-B9KV4-W2PBM
<span class='line'>393</span> DJH7R-4CYKJ-GWYDC-7MXHJ-X9VJY
<span class='line'>394</span> 3GT36-XXFDW-JC676-P4FBF-2G6MJ
<span class='line'>395</span> DGDGK-XVXWR-XJHYK-3688K-8HXYJ
<span class='line'>396</span> CX7DD-4GX4Y-BTTR4-H88Y7-GQPWQ
<span class='line'>397</span> J22CH-K4V7X-4G6H6-66JFG-737TK
<span class='line'>398</span> CG3BH-RG63P-6H2MR-3DVPT-6WTXJ
<span class='line'>399</span> JPDR8-7X4G9-Q226K-B7VYR-HFHMD
<span class='line'>400</span> W888Y-WM6YJ-DJQ27-WRB88-7FG96
<span class='line'>401</span>
<span class='line'>402</span> */</span><span class="WHIT">
<span class='line'>403</span>
<span class='line'>404</span>
<span class='line'>405</span> </span><span class="COMM">/*
<span class='line'>406</span> Win32_ComputerSystem:
<span class='line'>407</span> http://msdn2.microsoft.com/en-us/library/aa394224.aspx
<span class='line'>408</span>
<span class='line'>409</span> Win32_NetworkAdapterConfiguration:
<span class='line'>410</span> http://msdn2.microsoft.com/en-us/library/aa394217.aspx
<span class='line'>411</span> http://www.microsoft.com/china/technet/community/scriptcenter/topics/networking/01_atnc_intro.mspx
<span class='line'>412</span> http://www.codeproject.com/vbscript/ipaddress.asp?df=100&forumid=3295&exp=0&select=123580
<span class='line'>413</span>
<span class='line'>414</span>
<span class='line'>415</span> test:
<span class='line'>416</span> with(get_net_info())alert(UserName+'\n'+Name+'\n'+Workgroup+'\n'+Domain+'\n'+BootupState);
<span class='line'>417</span>
<span class='line'>418</span> with(get_net_info(2)){
<span class='line'>419</span> alert(UserName+'\n'+Name+'\n'+Domain+'\n'+BootupState+'\nAll '+netif.length+' interfaces get');
<span class='line'>420</span> for(i=0;i&lt;netif.length;i++)with(netif[i])
<span class='line'>421</span> sl(Caption+'\n'
<span class='line'>422</span> +DNSDomain+'\n'
<span class='line'>423</span> +DHCPServer+'\n'
<span class='line'>424</span> +DNSHostName+'\n'
<span class='line'>425</span> +DNSServerSearchOrder+'\n'
<span class='line'>426</span> +IPSubnet+'\n'
<span class='line'>427</span> +DefaultIPGateway+'\n'
<span class='line'>428</span> +IPAddress+'\n'
<span class='line'>429</span>
<span class='line'>430</span> +IPEnabled+'\n'
<span class='line'>431</span> +DHCPEnabled+'\n'
<span class='line'>432</span> +SettingID+'\n'
<span class='line'>433</span>
<span class='line'>434</span> +MACAddress
<span class='line'>435</span> );
<span class='line'>436</span> }
<span class='line'>437</span> WScript.Quit();
<span class='line'>438</span>
<span class='line'>439</span> */</span><span class="WHIT">
<span class='line'>440</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'>441</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>442</span> </span><span class="COMM">/**
<span class='line'>443</span> * 取得網卡設定的IP地址
<span class='line'>444</span> * @param type default type: ip setted interfaces only, 1: all interfaces, 2: 實體 net interfaces(網路卡,無線)
<span class='line'>445</span> * @returns
<span class='line'>446</span> * @example
<span class='line'>447</span> * IP=get_net_info().netif[0].IPAddress[0];
<span class='line'>448</span> * with(get_net_info())alert(UserName+'\n'+Name+'\n'+Workgroup+'\n'+Domain+'\n'+BootupState);
<span class='line'>449</span> * @requires WMI_data,VBA_to_JSA
<span class='line'>450</span> * @memberOf CeL.OS.WMI
<span class='line'>451</span> */</span><span class="WHIT">
<span class='line'>452</span> </span><span class="NAME">get_net_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_ComputerSystem'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">r.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">'Can not get Win32_ComputerSystem!\nIs this old system or the function is limited?'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>459</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT"> </span><span class="COMM">// WMI_data({computer:IP||'.',from:'Win32_ComputerSystem'}).item()</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT"> </span><span class="NAME">WMI_data.getProperties</span><span class="PUNC">(</span><span class="NAME">r.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">r.Workgroup</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT"> </span><span class="COMM">// Windows 2000 and Windows NT: Workgroup is not available. Domain: If the computer is not part of a domain, then the name of the workgroup is returned.</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT"> </span><span class="NAME">r.Workgroup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.Domain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>466</span>
<span class='line'>467</span> </span><span class="COMM">/* waste time
<span class='line'>468</span> with(WMI_data('Win32_NTDomain').item()){
<span class='line'>469</span> r.Caption=Caption,r.Description=Description;
<span class='line'>470</span> if(!r.Name)r.Name=Name;
<span class='line'>471</span> }
<span class='line'>472</span> */</span><span class="WHIT">
<span class='line'>473</span>
<span class='line'>474</span> </span><span class="WHIT"> </span><span class="NAME">r.netif</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'Win32_NetworkAdapterConfiguration'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT"> </span><span class="NAME">where</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT"> </span><span class="COMM">// 這判別法不是很好</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT"> </span><span class="COMM">// DHCPEnabled 與 IPEnabled 可以同時為 TRUE</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'MACAddress!=NULL AND (DHCPEnabled=TRUE OR IPEnabled=TRUE)'</span><span class="COMM">// OR IPXEnabled=TRUE</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'IPEnabled=TRUE'</span><span class="WHIT"> </span><span class="COMM">// 'NetEnabled=True': Vista only code?</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT"> </span><span class="COMM">// 在DHCP可能得到兩筆同IP之data.</span><span class="WHIT">
<span class='line'>485</span> </span><span class="WHIT"> </span><span class="COMM">// MACAddress: getmac.exe, arp -a, nbtstat -a 192.168.0.1</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT"> </span><span class="NAME">r.netif.push</span><span class="PUNC">(</span><span class="NAME">WMI_data.getProperties</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span>
<span class='line'>491</span>
<span class='line'>492</span>
<span class='line'>493</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'>494</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>495</span> </span><span class="COMM">/**
<span class='line'>496</span> * get CIDR data
<span class='line'>497</span> * @param {Number} CIDR CIDR mask bits, 0~32
<span class='line'>498</span> * @param {String} IP IPv4, e.g., 1.2.3.4
<span class='line'>499</span> * @return CIDR data
<span class='line'>500</span> * @since 2010/4/21 22:56:16
<span class='line'>501</span> * @memberOf CeL.OS.WMI
<span class='line'>502</span> */</span><span class="WHIT">
<span class='line'>503</span> </span><span class="NAME">CIDR_to_IP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CIDR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">CIDR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span>
<span class='line'>507</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">IP</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT"> </span><span class="NAME">IP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">IP.split</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">IP</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT"> </span><span class="NAME">IP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span>
<span class='line'>512</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT"> </span><span class="COMM">// geteway IP</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT"> </span><span class="NAME">geteway</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT"> </span><span class="COMM">// subnet mask</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT"> </span><span class="NAME">mask</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT"> </span><span class="COMM">// wildcard mask</span><span class="WHIT">
<span class='line'>518</span> </span><span class="WHIT"> </span><span class="NAME">wildcard</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>519</span> </span><span class="WHIT"> </span><span class="COMM">// subnet start IP,the entire network</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT"> </span><span class="NAME">subnet</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT"> </span><span class="COMM">// subnet end IP, broadcast address</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT"> </span><span class="NAME">broadcast</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT"> </span><span class="COMM">// Maximum Addresses, range IP count</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT"> </span><span class="COMM">// .count now = Maximum Subnets</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT"> </span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">32</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span>
<span class='line'>528</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>529</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CIDR</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>530</span> </span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>531</span> </span><span class="WHIT"> </span><span class="NAME">r.wildcard</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>532</span> </span><span class="WHIT"> </span><span class="NAME">r.mask</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> </span><span class="WHIT"> </span><span class="NAME">r.subnet</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.broadcast</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">IP</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>534</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CIDR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>535</span> </span><span class="WHIT"> </span><span class="NAME">r.broadcast</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">IP</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.wildcard</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">8</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="WHIT"> </span><span class="NAME">r.subnet</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">IP</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.mask</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT"> </span><span class="NAME">CIDR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT"> </span><span class="NAME">r.broadcast</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.wildcard</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT"> </span><span class="NAME">r.subnet</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.mask</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>542</span>
<span class='line'>543</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.count</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT"> </span><span class="NAME">r.count</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> </span><span class="WHIT"> </span><span class="NAME">r.geteway</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.broadcast.join</span><span class="PUNC">(</span><span class="STRN">','</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">','</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>546</span> </span><span class="WHIT"> </span><span class="COMM">// [the entire network, .., geteway, broadcast address]</span><span class="WHIT">
<span class='line'>547</span> </span><span class="WHIT"> </span><span class="NAME">r.geteway</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>548</span>
<span class='line'>549</span> </span><span class="WHIT"> </span><span class="COMM">//alert(r.geteway + '\n' + r.subnet + '\n' + r.broadcast + '\n' + r.wildcard + '\n' + r.subnet + '\n' + r.count);</span><span class="WHIT">
<span class='line'>550</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span>
<span class='line'>553</span>
<span class='line'>554</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'>555</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>556</span> </span><span class="COMM">/**
<span class='line'>557</span> * 改變網卡的IP地址: change IP, set IP
<span class='line'>558</span> * @param to_s IP or {IP:''||[], CIDR:24||.CIDR_notation, Subnet:''||[], DNS:''||[], Gateway:254||[], GatewayOrder:''||[]}
<span class='line'>559</span> * @param from IP or netif No.
<span class='line'>560</span> * @since
<span class='line'>561</span> * 2009/5/7 0:24:5 加強
<span class='line'>562</span> * 2010/3/3 10:41:17 a work version
<span class='line'>563</span> * @see
<span class='line'>564</span> * &lt;a href="http://msdn.microsoft.com/en-us/library/aa394217%28VS.85%29.aspx" accessdate="2010/3/3 13:15">Win32_NetworkAdapterConfiguration Class (Windows)&lt;/a>
<span class='line'>565</span> * &lt;a href="http://www.yongfa365.com/item/Use-WMi-Change-IP-VBS-yongfa365.html" accessdate="2010/3/3 13:14">通过 WMI 改变网卡的IP地址 ChangeIP.vbs - 柳永法(yongfa365)'Blog&lt;/a>
<span class='line'>566</span> * &lt;a href="http://www.microsoft.com/technet/scriptcenter/topics/networking/01_atnc_intro.mspx">Automating TCP/IP Networking on Clients: Part 1: Introduction&lt;/a>
<span class='line'>567</span> * &lt;a href="http://www.dotblogs.com.tw/PowerHammer/archive/2008/03/24/2060.aspx" accessdate="2010/3/3 13:15">使用 WMI 更改IP、子網路遮罩、閘道、DNS - 強力鎯頭 VB BLOG - 點部落&lt;/a>
<span class='line'>568</span> * Using NetSh.exe (no reboot required): &lt;a href="http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/How~To+Change~Ip~Address.txt" accessdate="2010/3/3 13:12">WWW Tech Support/WinBatch/How To\Change Ip Address.txt&lt;/a>
<span class='line'>569</span> * @example
<span class='line'>570</span> * set_net_info({IP:'163.16.20.212',Gateway:254});
<span class='line'>571</span> * sl(set_net_info({IP:'163.16.20.30',Gateway:254}));WScript.Quit();
<span class='line'>572</span> * @requires WMI_data,VBA_to_JSA,JSArrayToSafeArray,CIDR_to_IP
<span class='line'>573</span> * @memberOf CeL.OS.WMI
<span class='line'>574</span> */</span><span class="WHIT">
<span class='line'>575</span> </span><span class="NAME">set_net_info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">to_s</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">from</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>576</span>
<span class='line'>577</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">set_net_info</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">count</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IPA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ip</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">ip</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="REGX">/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">ip</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ip</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT"> </span><span class="NAME">ip</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">ip</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>581</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">JSArrayToSafeArray</span><span class="PUNC">(</span><span class="NAME">ip</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>585</span>
<span class='line'>586</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="WHIT">
<span class='line'>587</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(\/(\d{1,2}))?$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>589</span> </span><span class="WHIT"> </span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT"> </span><span class="NAME">IP</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">count</span><span class="WHIT">
<span class='line'>592</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>593</span>
<span class='line'>594</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>595</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_.CIDR_to_IP</span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">count</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>596</span> </span><span class="WHIT"> </span><span class="NAME">to_s.Gateway</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.geteway.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>597</span> </span><span class="WHIT"> </span><span class="NAME">to_s.Subnet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.mask.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>599</span>
<span class='line'>600</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>601</span> </span><span class="WHIT"> </span><span class="COMM">// treat as IP</span><span class="WHIT">
<span class='line'>602</span> </span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>603</span> </span><span class="WHIT"> </span><span class="NAME">IP</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>605</span>
<span class='line'>606</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">to_s.Gateway</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>607</span> </span><span class="WHIT"> </span><span class="NAME">to_s.Gateway</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">to_s.IP</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">to_s.IP.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">to_s.IP</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>608</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\d+$/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">to_s.Gateway</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>609</span>
<span class='line'>610</span> </span><span class="WHIT"> </span><span class="COMM">// SubnetMask: Subnet masks that complement the values in the IPAddress parameter. Example: 255.255.0.0. </span><span class="WHIT">
<span class='line'>611</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="STRN">'Subnet'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">to_s.Subnet</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>612</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_.CIDR_to_IP</span><span class="PUNC">(</span><span class="NAME">to_s.Subnet</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">_f.CIDR_notation</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">to_s.IP</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>613</span> </span><span class="WHIT"> </span><span class="NAME">to_s.Subnet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.subnet.join</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>615</span>
<span class='line'>616</span> </span><span class="WHIT"> </span><span class="COMM">//sl('set_net_info:\n[' + from + '] → [' + to_s.IP + '/' + to_s.Subnet + ']\nGateway: [' + to_s.Gateway + ']\nDNS: [' + ('DNS' in to_s ? to_s.DNS : _f.default_DNS) + ']');</span><span class="WHIT">
<span class='line'>617</span> </span><span class="WHIT"> </span><span class="COMM">// return -1;</span><span class="WHIT">
<span class='line'>618</span>
<span class='line'>619</span> </span><span class="WHIT"> </span><span class="NAME">to_s.Subnet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">(</span><span class="NAME">to_s.Subnet</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>620</span> </span><span class="WHIT"> </span><span class="NAME">to_s.IP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">(</span><span class="NAME">to_s.IP</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>621</span> </span><span class="WHIT"> </span><span class="NAME">to_s.DNS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">(</span><span class="STRN">'DNS'</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">to_s</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">to_s.DNS</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_f.default_DNS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>622</span>
<span class='line'>623</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">to_s.Gateway</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">(</span><span class="NAME">to_s.Gateway</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>624</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">to_s.GatewayOrder</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">to_s.GatewayOrder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">to_s.Gateway</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">to_s.Gateway.length</span><span class="WHIT">
<span class='line'>626</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>627</span> </span><span class="WHIT"> </span><span class="NAME">to_s.GatewayOrder.push</span><span class="PUNC">(</span><span class="PUNC">++</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">to_s.GatewayOrder</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT"> </span><span class="NAME">to_s.GatewayOrder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NAME">to_s.GatewayOrder</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span>
<span class='line'>631</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT"> </span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">from</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>634</span> </span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>635</span>
<span class='line'>636</span> </span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>637</span> </span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>638</span> </span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'Win32_NetworkAdapterConfiguration'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT"> </span><span class="COMM">// 這判別法不是很好</span><span class="WHIT">
<span class='line'>640</span> </span><span class="WHIT"> </span><span class="COMM">// DHCPEnabled 與 IPEnabled 可以同時為 TRUE</span><span class="WHIT">
<span class='line'>641</span> </span><span class="WHIT"> </span><span class="NAME">where</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'MACAddress!=NULL AND (IPEnabled=TRUE OR DHCPEnabled=TRUE)'</span><span class="COMM">// OR IPXEnabled=TRUE</span><span class="WHIT">
<span class='line'>642</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>643</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>644</span> </span><span class="WHIT"> </span><span class="COMM">// alert('Get if: ' + o.Caption + '\n' + from + ',' + count);</span><span class="WHIT">
<span class='line'>645</span> </span><span class="WHIT"> </span><span class="COMM">// 通常我們不會設定無線連線</span><span class="WHIT">
<span class='line'>646</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="REGX">/wireless/i</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">o.Caption</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span>
<span class='line'>649</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">from</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">count</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>650</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IPA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">VBA_to_JSA</span><span class="PUNC">(</span><span class="NAME">o.IPAddress</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">IPA.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">IPA</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">from</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>652</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_s.IP</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">o.EnableDHCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>653</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">EnableStatic</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>655</span> </span><span class="WHIT"> </span><span class="NAME">to_s.IP</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>656</span> </span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_s.Subnet</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">o.IPSubnet</span><span class="WHIT">
<span class='line'>657</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">to_s.Subnet</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>658</span> </span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_s.Gateway</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT">
<span class='line'>659</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">o.SetGateways</span><span class="PUNC">(</span><span class="NAME">to_s.Gateway</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>660</span> </span><span class="WHIT"> </span><span class="NAME">to_s.GatewayOrder</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>661</span> </span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_s.DNS</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">o.SetDNSServerSearchOrder</span><span class="PUNC">(</span><span class="NAME">to_s.DNS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT"> </span><span class="COMM">//alert('Set if:\n'+o.Caption+'\nto: '+to_s.IP+'\nerrno: '+r);</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: error detection</span><span class="WHIT">
<span class='line'>665</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>666</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>667</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>668</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>669</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>670</span>
<span class='line'>671</span> </span><span class="WHIT"> </span><span class="COMM">// not found / error</span><span class="WHIT">
<span class='line'>672</span> </span><span class="WHIT"> </span><span class="COMM">// http://msdn.microsoft.com/en-us/library/aa390383%28VS.85%29.aspx</span><span class="WHIT">
<span class='line'>673</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>674</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>675</span>
<span class='line'>676</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'>677</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>678</span> </span><span class="COMM">// default DNS</span><span class="WHIT">
<span class='line'>679</span> </span><span class="COMM">// 168.95.1.1,8.8.4.4</span><span class="WHIT">
<span class='line'>680</span> </span><span class="NAME">set_net_info.default_DNS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'8.8.8.8'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>681</span>
<span class='line'>682</span> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'>683</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>684</span> </span><span class="COMM">// http://en.wikipedia.org/wiki/CIDR_notation</span><span class="WHIT">
<span class='line'>685</span> </span><span class="NAME">set_net_info.CIDR_notation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>686</span>
<span class='line'>687</span>
<span class='line'>688</span>
<span class='line'>689</span>
<span class='line'>690</span>
<span class='line'>691</span> </span><span class="COMM">/* get IP of Windows Host
<span class='line'>692</span> http://www.scriptinganswers.com/forum/forum_posts.asp?TID=516&PID=3124
<span class='line'>693</span> Wscript.Network
<span class='line'>694</span>
<span class='line'>695</span> ping:
<span class='line'>696</span> http://blog.blueshop.com.tw/hammerchou/archive/2006/07/08/32205.aspx
<span class='line'>697</span> 1.
<span class='line'>698</span> GetObject("winmgmts:").Get("NetDiagnostics=@").Ping(strAddr, Ping)
<span class='line'>699</span> 2.
<span class='line'>700</span> objCls = GetObject("winmgmts:\\" & strMachine & "\root\CIMV2").Get("NetDiagnostics")
<span class='line'>701</span> objInPara = objCls.Methods_("Ping").inParameters.SpawnInstance_()
<span class='line'>702</span> objInPara.Properties_("sInAddr") = "www.google.com.tw" // 設定 Ping 的位置
<span class='line'>703</span> // Ping 為 方法 , ExecMethod 為 執行方法 ( 把參數送入執行 )
<span class='line'>704</span> objOutPara = objWMIsvc.ExecMethod("NetDiagnostics=@", "Ping", objInPara)
<span class='line'>705</span> // 取回輸出參數 ( Ping 的結果 ): objOutPara.ReturnValue = True 則 Ping 成功 , 反之則失敗
<span class='line'>706</span> objOutPara.sOutArg
<span class='line'>707</span>
<span class='line'>708</span>
<span class='line'>709</span> test:
<span class='line'>710</span> var h='Public',ip=getIPofHost(h);alert(ip?h+':\n'+ip:'Computer [\\'+h+'] is unreachable!');
<span class='line'>711</span>
<span class='line'>712</span> */</span><span class="WHIT">
<span class='line'>713</span> </span><span class="COMM">//getIPofHost[generateCode.dLK]='WMI_data';</span><span class="WHIT">
<span class='line'>714</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">getIPofHost</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>715</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">qIP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>716</span> </span><span class="WHIT"> </span><span class="NAME">from</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'Win32_PingStatus'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>717</span> </span><span class="WHIT"> </span><span class="NAME">where</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"Address='"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"'"</span><span class="WHIT">
<span class='line'>718</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>719</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">qIP.StatusCode</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">qIP.StatusCode</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>720</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">qIP.ProtocolAddress</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>721</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>722</span>
<span class='line'>723</span> </span><span class="COMM">// 終止進程 http://msdn2.microsoft.com/en-us/library/aa393907.aspx</span><span class="WHIT">
<span class='line'>724</span> </span><span class="COMM">//killProcess[generateCode.dLK]='WMI_data';</span><span class="WHIT">
<span class='line'>725</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">killProcess</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">isPID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>726</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>727</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">isPID</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>728</span> </span><span class="WHIT"> </span><span class="NAME">isPID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>729</span> </span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_Process'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>730</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>731</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isPID</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>732</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ProcessId</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>733</span> </span><span class="WHIT"> </span><span class="NAME">Terminate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>734</span> </span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>735</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>736</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Caption</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>737</span> </span><span class="WHIT"> </span><span class="NAME">Terminate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>738</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>739</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>740</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>741</span>
<span class='line'>742</span>
<span class='line'>743</span> </span><span class="COMM">/* 列舉進程 http://msdn2.microsoft.com/en-us/library/aa394372.aspx
<span class='line'>744</span>
<span class='line'>745</span> test:
<span class='line'>746</span> alert(get_process()['explorer.exe'].CommandLine);
<span class='line'>747</span> for(i=0,p=get_process();i&lt;p.length;i++)with(p[i])
<span class='line'>748</span> alert(i+' / '+p.length+'\n['+ProcessId+'] '+Caption+(Name==Caption?'':' ('+Name+')')+'\n'+(Description==Caption?'':Description+'\n')+CSName+'\n'
<span class='line'>749</span> +'Open files: '+HandleCount+'\n'
<span class='line'>750</span> //+OSName+'\n'
<span class='line'>751</span> +'memory: '+MinimumWorkingSetSize+'-'+MaximumWorkingSetSize+'\n' // memory pages visible to the process in physical RAM
<span class='line'>752</span> +'Time in kernel mode: '+KernelModeTime+' ms\n'+ExecutablePath+'\n'+CommandLine+'\n'+CreationDate.toLocaleString()
<span class='line'>753</span> );
<span class='line'>754</span> */</span><span class="WHIT">
<span class='line'>755</span> </span><span class="COMM">//get_process[generateCode.dLK]='WMI_data';</span><span class="WHIT">
<span class='line'>756</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">get_process</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>757</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_Process'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>759</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>760</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NAME">Caption</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NAME">r.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>761</span> </span><span class="WHIT"> </span><span class="NAME">ProcessId</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">ProcessId</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>762</span> </span><span class="WHIT"> </span><span class="NAME">Caption</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Caption</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>763</span> </span><span class="WHIT"> </span><span class="NAME">ExecutablePath</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">ExecutablePath</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>764</span> </span><span class="WHIT"> </span><span class="NAME">CommandLine</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CommandLine</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>765</span> </span><span class="WHIT"> </span><span class="NAME">Name</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// ==Caption</span><span class="WHIT">
<span class='line'>766</span> </span><span class="WHIT"> </span><span class="NAME">Description</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Description</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// ==Caption</span><span class="WHIT">
<span class='line'>767</span> </span><span class="WHIT"> </span><span class="NAME">CSName</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CSName</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>768</span> </span><span class="WHIT"> </span><span class="NAME">HandleCount</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">HandleCount</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>769</span> </span><span class="WHIT"> </span><span class="NAME">OSName</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">OSName</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>770</span> </span><span class="WHIT"> </span><span class="NAME">MinimumWorkingSetSize</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">MinimumWorkingSetSize</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>771</span> </span><span class="WHIT"> </span><span class="NAME">MaximumWorkingSetSize</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">MaximumWorkingSetSize</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>772</span> </span><span class="WHIT"> </span><span class="NAME">KernelModeTime</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">p.KernelModeTime</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="NAME">e5</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// 100000ms</span><span class="WHIT">
<span class='line'>773</span> </span><span class="WHIT"> </span><span class="NAME">CreationDate</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="WHIT">
<span class='line'>774</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">DateStringToDate</span><span class="PUNC">(</span><span class="NAME">CreationDate</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>775</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>776</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>777</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>778</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>779</span>
<span class='line'>780</span>
<span class='line'>781</span>
<span class='line'>782</span> </span><span class="COMM">/* 列舉服務
<span class='line'>783</span> http://msdn2.microsoft.com/en-us/library/aa394418.aspx
<span class='line'>784</span> http://www.microsoft.com/taiwan/technet/scriptcenter/topics/vista/indexer.mspx
<span class='line'>785</span>
<span class='line'>786</span> test:
<span class='line'>787</span> alert(get_service()['Event Log'].Description);
<span class='line'>788</span> for(i=0,s=get_service();i&lt;s.length;i++){t=i+' / '+s.length;for(j in s[i])t+='\n'+j+': '+s[i][j];alert(t);}
<span class='line'>789</span> */</span><span class="WHIT">
<span class='line'>790</span> </span><span class="COMM">//get_service[generateCode.dLK]='WMI_data';</span><span class="WHIT">
<span class='line'>791</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">get_service</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>792</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>793</span> </span><span class="WHIT"> </span><span class="NAME">WMI_data</span><span class="PUNC">(</span><span class="STRN">'Win32_Service'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>794</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>795</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NAME">Caption</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NAME">r.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>796</span> </span><span class="WHIT"> </span><span class="NAME">AcceptPause</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">AcceptPause</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT"> </span><span class="NAME">AcceptStop</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">AcceptStop</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>798</span> </span><span class="WHIT"> </span><span class="NAME">Caption</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Caption</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>799</span> </span><span class="WHIT"> </span><span class="NAME">Description</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Description</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>800</span> </span><span class="WHIT"> </span><span class="NAME">DisplayName</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">DisplayName</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT"> </span><span class="NAME">ExitCode</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">ExitCode</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT"> </span><span class="NAME">InstallDate</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">WMI_data.DateStringToDate</span><span class="PUNC">(</span><span class="NAME">InstallDate</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT"> </span><span class="NAME">Name</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Name</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>804</span> </span><span class="WHIT"> </span><span class="NAME">Pathname</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Pathname</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>805</span> </span><span class="WHIT"> </span><span class="NAME">ProcessId</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">ProcessId</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>806</span> </span><span class="WHIT"> </span><span class="NAME">ServiceSpecificExitCode</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">ServiceSpecificExitCode</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT"> </span><span class="NAME">Started</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Started</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>808</span> </span><span class="WHIT"> </span><span class="NAME">StartMode</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">StartMode</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>809</span> </span><span class="WHIT"> </span><span class="NAME">StartName</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">StartName</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>810</span> </span><span class="WHIT"> </span><span class="NAME">State</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">State</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>811</span> </span><span class="WHIT"> </span><span class="NAME">Status</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Status</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>812</span> </span><span class="WHIT"> </span><span class="NAME">SystemName</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">SystemName</span><span class="WHIT">
<span class='line'>813</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>814</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>815</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>816</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>817</span>
<span class='line'>818</span>
<span class='line'>819</span> </span><span class="COMM">/* http://msdn.microsoft.com/en-us/library/bb774148.aspx
<span class='line'>820</span> WinShell.ShellExecute(appName, appArgs, appPath, "", 0); http://msdn.microsoft.com/en-us/library/bb774148.aspx
<span class='line'>821</span> Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
<span class='line'>822</span> &lt;object runat="server" id="WinShell" scope="page" classid="clsid:13709620-C279-11CE-A49E-444553540000">&lt;/object>
<span class='line'>823</span> &lt;object runat="server" id="fso" scope="page" classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228">&lt;/object>
<span class='line'>824</span>
<span class='line'>825</span> http://windowssdk.msdn.microsoft.com/en-us/library/ms630425.aspx
<span class='line'>826</span> WinShell.ShutdownWindows(); // Open the Shutdown dialog http://www.robvanderwoude.com/index.html
<span class='line'>827</span> */</span><span class="WHIT">
<span class='line'>828</span>
<span class='line'>829</span>
<span class='line'>830</span> </span><span class="COMM">/* 2008/8/8 18:29:44
<span class='line'>831</span> run them with administrator rights runs under administrator privileges.
<span class='line'>832</span> 帳戶控制 Windows Vista使用軟體限制原則對抗未授權的軟體 http://www.microsoft.com/taiwan/technet/windowsvista/security/rstrplcy.mspx
<span class='line'>833</span> http://4sysops.com/archives/vista%E2%80%99s-uac-how-to-elevate-scripts-vbscript-and-jscript/
<span class='line'>834</span> http://blogs.msdn.com/aaron_margosis/archive/2007/07/01/scripting-elevation-on-vista.aspx
<span class='line'>835</span> Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA c:\windows\system32\control.exe /name Microsoft.UserAccounts http://www.dashken.net/index.php?/archives/280-VBScript-Check-if-OS-is-Vista-and-Vistas-UAC-status.html
<span class='line'>836</span> http://msdn.microsoft.com/en-us/magazine/cc163486.aspx
<span class='line'>837</span> HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindowsCurrentVersionPoliciesSystem\ConsentPromptBehaviorAdmin http://hsu.easynow.com.tw/index.php?load=read&id=28
<span class='line'>838</span> http://vistavitals.blogspot.com/2008/02/logon-scripts-token-effort.html
<span class='line'>839</span> runas http://www.merawindows.com/Forums/tabid/324/forumid/82/postid/32458/scope/posts/Default.aspx
<span class='line'>840</span> http://www.winhelponline.com/articles/185/1/VBScripts-and-UAC-elevation.html
<span class='line'>841</span>
<span class='line'>842</span> http://forums.techarena.in/vista-security/654643.htm
<span class='line'>843</span> Set objShell = CreateObject("Shell.Application")
<span class='line'>844</span> Set objFolder = objShell.Namespace("C:\")
<span class='line'>845</span> Set objFolderItem = objFolder.ParseName("myhta.hta")
<span class='line'>846</span> objFolderItem.InvokeVerb "runas"
<span class='line'>847</span>
<span class='line'>848</span> var WinShell=new ActiveXObject("Shell.Application"),p=location.pathname.replace(/[^\\]+$/,''),o=WinShell.Namespace(p).ParseName(location.pathname.slice(p.length));
<span class='line'>849</span> o.InvokeVerb("runas");
<span class='line'>850</span>
<span class='line'>851</span> http://www.zaoxue.com/article/tech-28339_2.htm http://www.lob.cn/vbs/20071126203237.shtml
<span class='line'>852</span>
<span class='line'>853</span> TODO:
<span class='line'>854</span> 對 prompt 回應不允許時的處理: 若想在受限的情況下使用?
<span class='line'>855</span> 不使用自訂程式 http://msdn.microsoft.com/en-us/library/bb776820(VS.85).aspx
<span class='line'>856</span> */</span><span class="WHIT">
<span class='line'>857</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">runas</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>858</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">p</span><span class="PUNC">)</span><span class="NAME">p</span><span class="PUNC">=</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">WScript</span><span class="PUNC">==</span><span class="STRN">'object'</span><span class="PUNC">?</span><span class="NAME">WScript.ScriptFullName</span><span class="PUNC">:</span><span class="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">location.pathname</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>859</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="NAME">js</span><span class="PUNC">:</span><span class="STRN">'wscript.exe'</span><span class="PUNC">,</span><span class="NAME">vbs</span><span class="PUNC">:</span><span class="STRN">'wscript.exe'</span><span class="PUNC">,</span><span class="NAME">hta</span><span class="PUNC">:</span><span class="STRN">'mshta.exe'</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="NAME">ext</span><span class="PUNC">=</span><span class="NAME">p.match</span><span class="PUNC">(</span><span class="REGX">/([^.]+)$/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>860</span> </span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">=</span><span class="NAME">ext</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">ext</span><span class="PUNC">=</span><span class="NAME">ext</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NAME">ext</span><span class="PUNC">]</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>861</span> </span><span class="WHIT"> </span><span class="COMM">// 判斷是否有權限</span><span class="WHIT">
<span class='line'>862</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">registryF.checkAccess</span><span class="PUNC">(</span><span class="STRN">'HKLM\\SOFTWARE\\'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>863</span> </span><span class="WHIT"> </span><span class="COMM">// 以管理者權限另外執行新的 It will get the UAC prompt if this feature is not disabled.</span><span class="WHIT">
<span class='line'>864</span> </span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="PUNC">(</span><span class="STRN">"Shell.Application"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ShellExecute</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">||</span><span class="NAME">p</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">?</span><span class="NAME">p</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">,</span><span class="STRN">'runas'</span><span class="COMM">/*,5*/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>865</span> </span><span class="WHIT"> </span><span class="COMM">// 執行完本身則退出</span><span class="WHIT">
<span class='line'>866</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">WScript</span><span class="PUNC">==</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="NAME">WScript.Quit</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">==</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="NAME">window.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>867</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>868</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>869</span>
<span class='line'>870</span>
<span class='line'>871</span> </span><span class="COMM">/* JScript file: check owner, .exe file
<span class='line'>872</span> http://www.microsoft.com/taiwan/technet/scriptcenter/resources/qanda/nov04/hey1115.mspx
<span class='line'>873</span> Exec Method (Windows Script Host) http://msdn.microsoft.com/en-us/library/ateytk4a(VS.85).aspx
<span class='line'>874</span>
<span class='line'>875</span> usage:
<span class='line'>876</span> runProg(path): use WshShell.Exec, return [StdOut, StdErr, ExitCode]
<span class='line'>877</span> runProg(path, 1): use WshShell.Exec, can get output by .StdOut.ReadAll(), or .StdErr.ReadAll()
<span class='line'>878</span> runProg([path, WindowStyle, WaitonReturn],2): use WshShell.Run
<span class='line'>879</span> runProg(script path, remote computer): use WshRemote
<span class='line'>880</span> runProg(path, remote computer): use WMI
<span class='line'>881</span>
<span class='line'>882</span> TODO:
<span class='line'>883</span> runProg([path, Verb],3): use Shell.Application InvokeVerb
<span class='line'>884</span> runProg([path, arg1, arg2,..]): use Shell.Application.ShellExecute
<span class='line'>885</span>
<span class='line'>886</span>
<span class='line'>887</span> example:
<span class='line'>888</span> WScript.Echo(runProg('%COMSPEC% /U /c ""C:\\Program Files\\WinRAR\\Rar.exe" vt -scuc "F:\\CLAMP 01.rar""')[0]);
<span class='line'>889</span>
<span class='line'>890</span>
<span class='line'>891</span> WshShell.Run(command, [WindowStyle 0-10], [WaitonReturn false: nowait & return 0, true: wait & return error code])
<span class='line'>892</span> WshShell.Exec(),objFolderItem.InvokeVerb()
<span class='line'>893</span> WshShell.Run('command /k ' + ドライブ +' | cd /D '+ パス);// cd で他ドライブへ移れないので。
<span class='line'>894</span> */</span><span class="WHIT">
<span class='line'>895</span> </span><span class="COMM">//runProg[generateCode.dLK]='initWScriptObj';</span><span class="WHIT">
<span class='line'>896</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">runProg</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>897</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>898</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">r</span><span class="PUNC">||</span><span class="NAME">r</span><span class="PUNC">===</span><span class="NUMB">1</span><span class="PUNC">||</span><span class="NAME">r</span><span class="PUNC">===</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="PUNC">(</span><span class="STRN">'WScript.Shell'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">==</span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>899</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">==</span><span class="STRN">'object'</span><span class="PUNC">&&</span><span class="NAME">r</span><span class="PUNC">===</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>900</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">=</span><span class="NAME">s.Run</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">p</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">p</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>901</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">s.Exec</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">)</span><span class="NAME">r</span><span class="PUNC">=</span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>902</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">with</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>903</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">Status</span><span class="PUNC">)</span><span class="NAME">WScript.Sleep</span><span class="PUNC">(</span><span class="NUMB">80</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>904</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="NAME">StdOut.ReadAll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">StdErr.ReadAll</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">ExitCode</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>905</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>906</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>907</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>908</span>
<span class='line'>909</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="REGX">/^[^ ]+\.(j|vb)s$/i</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>910</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">=</span><span class="PUNC">(</span><span class="NAME">WScript.CreateObject</span><span class="PUNC">(</span><span class="STRN">'WSHController'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CreateScript</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>911</span> </span><span class="WHIT"> </span><span class="NAME">s.Execute</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>912</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>913</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>914</span>
<span class='line'>915</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">GetObject</span><span class="PUNC">(</span><span class="STRN">"winmgmts:{impersonationLevel=impersonate}//"</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">||</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"/root/cimv2:Win32_Process"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>916</span> </span><span class="WHIT"> </span><span class="COMM">//if(/^[^ ]+\.(j|vb)s$/i.test(p))p="wscript.exe "+p;</span><span class="WHIT">
<span class='line'>917</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s.Create</span><span class="PUNC">(</span><span class="NAME">p</span><span class="COMM">/*,null,null,intProcessID*/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// Create 方法會讓這個指令碼在「遠端電腦」上執行。</span><span class="WHIT">
<span class='line'>918</span> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>919</span> </span><span class="WHIT"> </span><span class="COMM">//popErr(e);</span><span class="WHIT">
<span class='line'>920</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>921</span> </span><span class="PUNC">}</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="COMM">// function runProg</span><span class="WHIT">
<span class='line'>922</span>
<span class='line'>923</span>
<span class='line'>924</span>
<span class='line'>925</span> </span><span class="COMM">/* shutdown/reboot computer 2007/5/8-9 0:8:52
<span class='line'>926</span> http://www.robvanderwoude.com/index.html
<span class='line'>927</span> http://www.ericphelps.com/batch/samples/reboot.txt
<span class='line'>928</span>
<span class='line'>929</span> http://www.semcase.com/docus/iis/prog_wmi_tut_03_01.htm http://www.semcase.com/docus/iis/iis.htm
<span class='line'>930</span> http://support.microsoft.com/kb/913538 當您使用會讓列舉程式物件在 Microsoft Windows Server 2003 或 Microsoft Windows XP 用戶端電腦上進行內部複製的 Windows Management Instrumentation (WMI) 功能時列舉程式物件於用戶端電腦尚未完成使用列舉程式物件的動作時即遭取消。此外WMI 功能還可能傳回錯誤碼。
<span class='line'>931</span>
<span class='line'>932</span> mode:
<span class='line'>933</span> 0 poweroff (if supported by the hardware)
<span class='line'>934</span> null,1 reboot
<span class='line'>935</span> restart
<span class='line'>936</span> logoff
<span class='line'>937</span> shutdown
<span class='line'>938</span> suspend, sleep, hibernate
<span class='line'>939</span> lock
<span class='line'>940</span> // standby http://www.tutorials-xe.com/SCRIPTING/Restart-service/
<span class='line'>941</span> 16 force
<span class='line'>942</span>
<span class='line'>943</span> open the shutdown dialog
<span class='line'>944</span>
<span class='line'>945</span> time: seconds
<span class='line'>946</span> */</span><span class="WHIT">
<span class='line'>947</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">shutdownF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>948</span> </span><span class="NAME">setObjValue</span><span class="PUNC">(</span><span class="STRN">'shutdownF'</span><span class="PUNC">,</span><span class="STRN">'poweroff,reboot,restart,logoff,shutdown,suspend,lock,force=16,dialog=32'</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>949</span> </span><span class="NAME">shutdown</span><span class="PUNC">[</span><span class="NAME">generateCode.dLK</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="STRN">'initWScriptObj,shutdownF,Sleep'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>950</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">shutdown</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">,</span><span class="NAME">time</span><span class="COMM">/*,message*/</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>951</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">mode</span><span class="PUNC">=</span><span class="NAME">shutdownF.reboot</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>952</span>
<span class='line'>953</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">,</span><span class="NAME">sComputer</span><span class="PUNC">=</span><span class="STRN">"."</span><span class="WHIT">
<span class='line'>954</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">_s</span><span class="PUNC">,</span><span class="NAME">s</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>955</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>956</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">time</span><span class="PUNC">&&</span><span class="PUNC">!</span><span class="NAME">_s</span><span class="PUNC">)</span><span class="NAME">Sleep</span><span class="PUNC">(</span><span class="NAME">time</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>957</span> </span><span class="WHIT"> </span><span class="NAME">_s</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>958</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>959</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">force</span><span class="PUNC">=</span><span class="NAME">mode</span><span class="PUNC">&</span><span class="NAME">shutdownF.force</span><span class="WHIT">
<span class='line'>960</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">sF</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="NAME">f</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">a.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">a</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">+</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>961</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">oWMIS</span><span class="WHIT">
<span class='line'>962</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>963</span>
<span class='line'>964</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">-</span><span class="PUNC">=</span><span class="NAME">force</span><span class="PUNC">)</span><span class="PUNC">==</span><span class="NAME">shutdownF.dialog</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>965</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>966</span> </span><span class="WHIT"> </span><span class="NAME">WinShell.ShutdownWindows</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>967</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>968</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>969</span>
<span class='line'>970</span> </span><span class="WHIT"> </span><span class="COMM">// way 1: WMI</span><span class="WHIT">
<span class='line'>971</span> </span><span class="WHIT"> </span><span class="NAME">sF</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">shutdownF.logoff</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">shutdownF.shutdown</span><span class="PUNC">,</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="NAME">shutdownF.reboot</span><span class="PUNC">,</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="NAME">shutdownF.force</span><span class="PUNC">,</span><span class="NUMB">4</span><span class="PUNC">,</span><span class="NAME">shutdownF.poweroff</span><span class="PUNC">,</span><span class="NUMB">8</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>972</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// f.hasOwnProperty(mode)</span><span class="WHIT">
<span class='line'>973</span> </span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">=</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">mode</span><span class="PUNC">]</span><span class="PUNC">&</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">force</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>974</span> </span><span class="WHIT"> </span><span class="NAME">oWMIS</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Enumerator</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>975</span> </span><span class="WHIT"> </span><span class="NAME">GetObject</span><span class="PUNC">(</span><span class="STRN">"winmgmts:{impersonationLevel=impersonate,(Shutdown)}//"</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">sComputer</span><span class="PUNC">||</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"/root/cimv2"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>976</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">ExecQuery</span><span class="PUNC">(</span><span class="STRN">"Select * from Win32_OperatingSystem"</span><span class="PUNC">)</span><span class="COMM">//Select * from Win32_OperatingSystem Where primary=true</span><span class="WHIT">
<span class='line'>977</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>978</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">oWMIS</span><span class="PUNC">)</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>979</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>980</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="PUNC">;</span><span class="PUNC">!</span><span class="NAME">oWMIS.atEnd</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="NAME">oWMIS.moveNext</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>981</span> </span><span class="WHIT"> </span><span class="COMM">//oWMIS.item().Reboot();//.Shutdown(); // force!</span><span class="WHIT">
<span class='line'>982</span> </span><span class="WHIT"> </span><span class="NAME">oWMIS.item</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Win32Shutdown</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="COMM">//if() // http://msdn2.microsoft.com/en-us/library/aa394058.aspx</span><span class="WHIT">
<span class='line'>983</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>984</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>985</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>986</span> </span><span class="WHIT"> </span><span class="COMM">// way 2: RUNDLL32 SHELL32.DLL, SHExitWindowsEx [n]</span><span class="WHIT">
<span class='line'>987</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="NAME">WshShell.Run</span><span class="PUNC">(</span><span class="STRN">" RUNDLL32 SHELL32.DLL,SHExitWindowsEx "</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">mode</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>988</span>
<span class='line'>989</span> </span><span class="WHIT"> </span><span class="COMM">// way 3: shutdown.exe utility</span><span class="WHIT">
<span class='line'>990</span> </span><span class="WHIT"> </span><span class="NAME">sF</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">shutdownF.logoff</span><span class="PUNC">,</span><span class="STRN">'l'</span><span class="PUNC">,</span><span class="NAME">shutdownF.poweroff</span><span class="PUNC">,</span><span class="STRN">'s'</span><span class="PUNC">,</span><span class="NAME">shutdownF.shutdown</span><span class="PUNC">,</span><span class="STRN">'s'</span><span class="PUNC">,</span><span class="NAME">shutdownF.reboot</span><span class="PUNC">,</span><span class="STRN">'r'</span><span class="PUNC">,</span><span class="NAME">shutdownF.dialog</span><span class="PUNC">,</span><span class="STRN">'i'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>991</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="NAME">WshShell.Run</span><span class="PUNC">(</span><span class="STRN">'%windir%\System32\shutdown.exe -'</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">time</span><span class="PUNC">||</span><span class="NAME">s</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="STRN">''</span><span class="PUNC">:</span><span class="STRN">' -t '</span><span class="PUNC">+</span><span class="NAME">time</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">force</span><span class="PUNC">?</span><span class="STRN">' -f'</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="COMM">// -s or -r</span><span class="WHIT">
<span class='line'>992</span>
<span class='line'>993</span> </span><span class="WHIT"> </span><span class="COMM">// way 4: rundll.exe</span><span class="WHIT">
<span class='line'>994</span> </span><span class="WHIT"> </span><span class="NAME">sF</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">shutdownF.logoff</span><span class="PUNC">,</span><span class="STRN">'SHELL.DLL,RestartDialog'</span><span class="PUNC">,</span><span class="NAME">shutdownF.poweroff</span><span class="PUNC">,</span><span class="STRN">'USER.EXE,ExitWindows'</span><span class="PUNC">,</span><span class="NAME">shutdownF.shutdown</span><span class="PUNC">,</span><span class="STRN">'USER.EXE,ExitWindows'</span><span class="COMM">/*'USER.EXE,#7'||'USER.EXE, #7'||'USER.EXE,#7 0'*/</span><span class="PUNC">,</span><span class="NAME">shutdownF.restart</span><span class="PUNC">,</span><span class="STRN">'USER.EXE,ExitWindowsExec'</span><span class="COMM">/*'USER.EXE,#246'*/</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>995</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="NAME">WshShell.Run</span><span class="PUNC">(</span><span class="STRN">"rundll.exe "</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">mode</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>996</span>
<span class='line'>997</span> </span><span class="WHIT"> </span><span class="COMM">// way 5: rundll32.exe</span><span class="WHIT">
<span class='line'>998</span> </span><span class="WHIT"> </span><span class="NAME">sF</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">shutdownF.poweroff</span><span class="PUNC">,</span><span class="STRN">'KRNL386.EXE,exitkernel'</span><span class="PUNC">,</span><span class="NAME">shutdownF.shutdown</span><span class="PUNC">,</span><span class="STRN">'USER.EXE,ExitWindows'</span><span class="PUNC">,</span><span class="NAME">shutdownF.suspend</span><span class="PUNC">,</span><span class="STRN">'PowrProf.dll,SetSuspendState'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>999</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="NAME">WshShell.Run</span><span class="PUNC">(</span><span class="STRN">"rundll32.exe "</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">mode</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="WHIT"> </span><span class="COMM">// way 6: RUNDLL32 USER32.DLL</span><span class="WHIT">
<span class='line'>1001</span> </span><span class="WHIT"> </span><span class="NAME">sF</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">shutdownF.lock</span><span class="PUNC">,</span><span class="STRN">'LockWorkStation'</span><span class="PUNC">,</span><span class="NAME">shutdownF.logoff</span><span class="PUNC">,</span><span class="STRN">'ExitWindowsEx'</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1002</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="NAME">WshShell.Run</span><span class="PUNC">(</span><span class="STRN">"rundll32.exe user32.dll,"</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">[</span><span class="NAME">mode</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1003</span>
<span class='line'>1004</span> </span><span class="WHIT"> </span><span class="COMM">// way 7: RUNONCE.EXE runonce.exe是微軟Run Once的包裝。它用於第三方應用程序的安裝程序。它允許安裝程序添加到啟動項中用於再次啟動後進行進一步配置。</span><span class="WHIT">
<span class='line'>1005</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">==</span><span class="NAME">shutdownF.reboot</span><span class="PUNC">)</span><span class="KEYW">try</span><span class="PUNC">{</span><span class="NAME">WshShell.Run</span><span class="PUNC">(</span><span class="STRN">"RUNONCE.EXE -q"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1006</span>
<span class='line'>1007</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1008</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1009</span>
<span class='line'>1010</span>
<span class='line'>1011</span> </span><span class="COMM">// ↑WMI set ==================</span><span class="WHIT">
<span class='line'>1012</span>
<span class='line'>1013</span>
<span class='line'>1014</span>
<span class='line'>1015</span>
<span class='line'>1016</span>
<span class='line'>1017</span>
<span class='line'>1018</span>
<span class='line'>1019</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>1020</span> </span><span class="WHIT"> </span><span class="NAME">CeL.OS.WMI</span><span class="WHIT">
<span class='line'>1021</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1022</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1023</span>
<span class='line'>1024</span> </span><span class="COMM">//===================================================</span><span class="WHIT">
<span class='line'>1025</span>
<span class='line'>1026</span> </span><span class="NAME">CeL.setup_module</span><span class="PUNC">(</span><span class="NAME">module_name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">code_for_including</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1027</span>
<span class='line'>1028</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1029</span> </span></pre></body></html>