MACアドレスã®å–å¾—ã¨UWSCã®å„ªä½æ€§ã«ã¤ã„ã¦
別件調査ä¸ã«ã€UWSCã§ã®MACアドレスå–得方法を見ã¤ã‘ãŸã€‚
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=2855&log=ON&cnt=24
相変ã‚らãšç´ 晴らã—ã„。
msgbox(betweenstr(doscmd("ipconfig /all"), "Physical Address. . . . . . . . . : ", chrb(13)))
ã“ã®ã‚·ãƒ³ãƒ—ルã•ã€‚
ãŸã ã€
ã¯ãŸã—ã¦ã©ã‚Œã ã‘ã®è¨€èªžãŒã“ã®å‡¦ç†ã‚’1行ã§æ›¸ã‘ã‚‹ã ã‚ã†ã‹ï¼Ÿ
ã¨ã‚‚ã‚ã£ãŸã®ã§ã€å¿…æ»ã«è€ƒãˆã¦ã¿ãŸã€‚
ã¨ã‚Šã‚ãˆãšè€ƒãˆã‚‹
手元ã®Windows環境ã«ã¯Perlã™ã‚‰ãªã„ã®ã§ã€WSH(VBS/JS)ã‹Powershell。
Powershellã¯ã€doscmdã¯å•é¡Œãªã—。betweenstrã¯æ£è¦è¡¨ç¾ã ã。
[Text.RegularExpressions.Regex]::Match((ipconfig /all), "(?:Physical Address[^:]*: )([^ ]*)").Groups[1].Value
å°‘ã—é•·ã„ã§ã™ã。
åå‰ä¿®é£¾ãŒãªã‚“ã¨ã‹ãªã‚Œã°ãã‡ã€‚
ã¾ã‚ã€UWSCã®betweenstrãŒå‰å¤§ã§ã™ã€‚
æ£è¦è¡¨ç¾ã¯æŸ”軟ãªã®ã§ã™ããªã‚“ã§ã™ã‘ã©ã。
WScript.Echo((new ActiveXObject('WScript.Shell')).Exec('ipconfig /all').StdOut.ReadAll().match(/(?:Physical Address[^:]*: )(.*)/)[1])
ã¾ãŸé•·ããªã‚Šã¾ã—ãŸã€‚
Execã™ã‚‹ã®ã«ã‚ªãƒ–ジェクトを作ã£ã¦ã€çµæžœå–り出ã—ã®ãƒ¡ã‚½ãƒƒãƒ‰é€£çµãŒç—›ã„。
WScript.Echo Split(Split(CreateObject("WScript.Shell").Exec("ipconfig /all").StdOut.ReadAll,"Physical Address. . . . . . . . . : ")(1))(0)
VBSã«ã¯ã€Split関数ã¨ã„ã†å‘³æ–¹ãŒã„ã¾ã™ã。
ã“れも実行用オブジェクトãŒç—›ã„。
対比
言語 | 表示 | コマンド実行 | 切り出㗠| 備考 |
---|---|---|---|---|
UWSC | MSGBOX | DOSCMD(〜) | BETWEENSTR | |
Powershell | (ãªã—。オブジェクト返ã™ã¨è¡¨ç¤ºï¼‰ | (〜) | æ£è¦è¡¨ç¾ | 切り出ã—ãŒåˆ¤ã‚Šé›£ã„ã‹ |
WSH/JS | WScript.Echo | (WScript.Shell).Exec(〜).StdOut.ReadAll | 〜.match | 実行çµæžœå–å¾—ãŒã |
WSH/VBS | WScript.Echo | (WScript.Shell).Exec(〜).StdOut.ReadAll | Split(Split) | wscriptã§ã‚‚コマンドプãƒãƒ³ãƒ—トãŒå‡ºã‚‹ã®ã‚‚ |
考察
最åˆã€è¤‡æ–‡ãŒå¿…è¦ã‹ã¨æ€ã£ãŸã®ã§ã™ãŒã€ãªã‚“ã¨ã‹ãªã‚Šã¾ã—ãŸã€‚
Powershellã¯æœ€åˆã‹ã‚‰ã„ã‘ã‚‹ã¨æ€ã„ã¾ã—ãŸãŒã€‚
Javascriptã¯è‹¦æˆ¦ã—ã¾ã—ãŸã€‚
VBScriptã¯Split関数をæ€ã„出ã—ã¦ã€ãªã‚“ã¨ã‹è¤‡æ–‡ã‚’å…ã‚Œã¾ã—ãŸã€‚
ã‚„ã‚ŠãŸã„ã“ã¨ãŒã‚·ãƒ³ãƒ—ルã«å‡ºæ¥ã‚‹ã‚ˆã†ç”¨æ„ã•ã‚Œã¦ã„ã‚‹ã€ãã‚ŒãŒUWSCã®å¼·ã¿ã§ã™ã。