IE 限定・JScript で Windows ユーザ名を取得する

ActiveXObject を使って、Windows にログインしているユーザ名を取得する。基本的に環境変数を参照する感じ。以下の3つのいずれでも同じユーザ名が取得できる。

var shell = new ActiveXObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%");

var environment = new ActiveXObject("WScript.Shell").Environment("PROCESS").item("USERNAME");

var network = new ActiveXObject("WScript.Network").UserName;

ActiveX コントロールの警告とか

ローカルの HTML ファイルに埋め込んで IE11 で開くと、

このページの ActiveX コントロールは、安全でない可能性があり ページのほかの部分に影響する可能性があります。ほかの部分に影響しても問題ありませんか?"

というメッセージが出る。「OK」を押さないと ActiveXObject が生成できない。

「ツール」-「インターネットオプション」の「セキュリティ」-「レベルのカスタマイズ」で「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」を「有効にする」にすることで回避できます

…という参考サイトの記載のとおりで、自分も Windows7 の IE11 まではこれで解消してたんだけど、Windows10 にしたせいなのか、解消せず。

上の設定を「有効にする」にすると、「現在のセキュリティ設定では、コンピューターが危険にさらされます。」という警告が出っ放しになって、うざったい。直し方分かんないし無視。

参考