動作確認用ソース
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<title>clientName</title> | |
<body> | |
<button id=btn>push</button> | |
</body> | |
<script> | |
AXO = function(name){return new ActiveXObject(name)} | |
shell = AXO('WScript.Shell') | |
fs = AXO('Scripting.FileSystemObject') | |
gsf2 = fs.GetSpecialFolder(2) | |
Read = function(p){var o=fs.OpenTextFile(p), s=o.AtEndOfStream?'':o.ReadAll(); o.Close(); return s} | |
Write = function(path,v){with(fs.CreateTextFile(path)){Write(v);return Close()} } | |
btn.onclick = function(){ | |
var path=gsf2+'/'+(new Date()).getTime()+'.wsf' | |
Write(path, ['<job>','<'+'script>','('+function(){ | |
WScript.Echo((new ActiveXObject('WScript.Shell')).ExpandEnvironmentStrings("%CLIENTNAME%")) | |
}+')()','</'+'script>','</job>'].join('\r\n')) | |
var ex = shell.exec('cscript "'+path+'"') | |
this.innerText = ex.StdOut.ReadAll() | |
fs.DeleteFile(path) | |
} | |
</script> | |
</html> |
正しく判定できなかったのは以下のケース
【ケース1】
1.PC_AからPC_Bにリモートデスクトップ接続する
2.接続先で上記prgを実行する
3.ボタンをクリックすると表示が「PC_A」になる ←ここまではOK
4.PC_Bに普通に(リモートデスクトップ接続ではない、そのPCに繋がっているマウスやキーボードを操作して)ログインする
5.2の手順で起動したままになっているprgのボタンを再度クリックする→ボタンの表示は「PC_A」のまま ← 本当は%CLIENTNAME%になるのが理想
6.PC_Bで上記prgをもう一つ起動してボタンをクリックする → %CLIENTNAME%と表示される ←これはOK
【ケース2】
1.PC_Bに普通に(リモートデスクトップ接続ではない、そのPCに繋がっているマウスやキーボードを操作して)ログインする
2.PC_Bで上記prgを実行する
3.ボタンをクリックすると表示が「%CLIENTNAME%」になる ←ここまではOK
4.PC_AからPC_Bにリモートデスクトップ接続する
5.2の手順で起動したままになっているprgのボタンを再度クリックする→ボタンの表示は「%CLIENTNAME%」のまま ← 本当はPC_Aになるのが理想
6.PC_Bで上記prgをもう一つ起動してボタンをクリックする → PC_Aと表示される ←これはOK
環境変数はプログラム起動時の値がプログラムごとに保持されているような感じです。
そして、その値は各プログラムから呼び出された別プログラムにも継承されている模様。。
リモートデスクトップ接続中かどうかで処理を切り替えたかったのですが、プログラム起動中の状態の変化は感知できないようです。。
0 件のコメント:
コメントを投稿