2012-01-27 8 views
2

私は、クライアントマシンから環境変数情報からシステム情報を収集する必要があるイントラネットアプリケーションに取り組んでいるので、後でサーバーで処理する際に使用できます。ブラウザはInternet Explorerのバージョン8と9です。Internet ExplorerのWebページでjavascriptから.NETコントロールまたはクラスライブラリを呼び出すにはどうすればよいですか?

私は可能性としてSilverlightを見ましたが、セキュリティ上の理由から、私が収集する必要のある情報を得るには余りにも制約があるようです。

これまでのところ、回答を検索してもまだ何も得られていません。何かご意見は?

+0

ActiveXを作成する必要がありますコントロール。 – SLaks

+0

一般的に、ブラウザは私たちのマシンに関する情報を得るためにウェブサイトを立ち上げるのを防ぎます。イントラネットに必要な情報を入手できれば、世界中の何人かのハッカーがそれを手に入れることができますか? – DOK

答えて

2

ブラウザ内から環境変数を読み取ることはできません。ブラウザはインターネット用に設計されているため、システムの設定を読むことができればセキュリティ上の問題が発生します。インターネットで自分のシステム情報を読んでいるウェブサイトを誰も望んでいないのですか?私はあなたが達成しようとしていることをする可能性について非常に懐疑的です。ただし、イントラネットのWebサイトからダウンロードされたサンプルWindowsベースのアプリケーションを作成し、環境設定を読み取り、サーバーに送信することを検討することもできます。

+0

私はこの作業を行い、すでに呼び出しているインストーラの周りにラッパーを実行し、Webサービスコールを行うという他のアイデアを模索してきました。 – amber

0

これは、ローカルコンピュータにアクセスするプログラムを作成することはできません。悪意のある人以外は興味がありません。

あなたはあなたのユーザーが何人いるか分かりません。しかし、情報が必要な場合は、必要なすべてのデータをコンピュータから取り出し、ユーザーにマップされたデータベースに格納するプログラムを作成することが1つの解決策になります。次に、ブラウザで必要なときにデータベースから情報を引き出します。

6

確かに、.Netクラスを作成し、IEのJavaScriptからインスタンス化することができます。

  1. あなたのクラスComVisible
  2. はとにかくnew ActiveXObject

を呼び出し、JavaScriptコードでregasm

  • で.NETアセンブリを登録し、あなたのクラスProgId
  • を付けてください、まだありますセキュリティの問題:ActiveXの実行を手動で許可する必要があります。

    私が覚えているように、そのような何か(テストしていない)でなければなりません:C#では

    :管理者コンソールで

    [ComVisible(true)] 
    [ProgId("MyCompany.MyClass")] 
    public class MyClass 
    { 
        public string UserName 
        { 
         get { return Environment.UserName; } 
        } 
    } 
    

    JavaScriptで
    regasm MyClass.dll 
    

    var myClass = new ActiveXObject("MyCompany.MyClass"); 
    alert(myClass.UserName); 
    
  • +0

    私はこれを解決策と考えていましたが、エンドユーザーが手動で手作業を自動化しようと努力しているため、追加の手作業があります。 – amber