1

ローカルイントラネットのphpページにコンピューターの名前とIPを表示するコードを記述したので、ユーザーサービスはエンドユーザーにコンピューター名を尋ねることができます。現在、IEでのみ実行され、ファイルがローカルコンピューター上にある場合にのみ実行されます。

<script type="text/javascript" language="javascript">           
    var cpu = new ActiveXObject("WScript.Network");
    document.write("<h1 style=\"color:#ffc533\"> Your Computer's name is: " + cpu.ComputerName + "</h1>")
</script>
<h1>Your IP Address is: <?php print $_SERVER[REMOTE_ADDR] ?></h1>

コンピューターでテストすると両方が表示されますが、サーバーにアップロードするとIPアドレスのみが表示されます。IEでのみ動作することは問題ではありませんが、ローカルの問題は問題です。だから私の質問は2つあります。コンピューター名をページに表示するにはどうすればよいですか、または逆引きDNSを有効にせずにコンピューター名を機能させるためのより良い方法はありますか?

4

1 に答える 1

1

編集開始

元の回答は以下のとおりです。セキュリティホールを開く代わりにこれを追加しました。

独自の ActiveX DLL を作成し、それを各クライアント コンピューターに登録することができます。コンピューター名を返すクラスを実装するか、単に WScript.Network をラップすることもできます。次に、IObjectSafety インターフェイスをクラスに実装し、スクリプトを実行しても安全であることをマークします。WScript オブジェクトはコンピューター上のファイルも変更できるため安全ではありませんが、コンピューター名を取得する関数を 1 つだけラップすると、コントロールはファイルを変更できなくなります。

IObjectSafety の実装でスクリプティングを安全にするために、IID_IActiveScript、IID_IDispatch、および IID_IPersist を返しますSetInterfaceSafetyOptionsS_OK実装の詳細については、提供されているリンクを参照してください。

これは手間がかかりますが、以下のオプションを使用して安全でないコントロールを実行する方法をユーザーに示す危険を取り除きます。

編集終了

各クライアント マシンで次の手順を実行します。

Internet Explorer を開き、[ツール] -> [インターネット オプション] メニューを選択します。

1

[セキュリティ] タブを選択し、[カスタム レベル] ボタンを押します。

2

[ActiveX コントロールとプラグイン] セクションで、[署名されていない ActiveX コントロールをダウンロードする] と [スクリプトを実行しても安全であるとマークされていない ActiveX コントロールを初期化してスクリプトを作成する] の 2 つの設定が [プロンプト] に設定されていることを確認します。

3

両方のダイアログ ボックスで [OK] を押して閉じます。

また、スクリプト ランタイム (WScript) が登録されていることを確認するには、[スタート] メニューに移動して [ファイル名を指定して実行] を押し、「cmd」と入力して Enter キーを押します。

4

コマンド プロンプトが開きます。

ドライブがドライブ C であることを確認し、「C:」と入力します。</p>

「regsvr32 C:\windows\system32\scrrun.dll」をコピーして貼り付け、Enter キーを押します。DllRegisterServer が成功したことを示すメッセージ ボックスが表示されることを確認します。

5

セットアップ完了。

于 2013-03-19T15:08:52.130 に答える