2012-06-11 9 views
5

DNSやホストファイルを変更しないで特定のIPにホスト名を解決させる方法があるかどうかを判断しようとしています。ホストファイルを変更せずにホスト名解決

C#を使用して、クライアントからサーバーに要求していますが、要求でホスト名を使用して証明書が要求を適切に認証するようにする必要があります。しかし、私のプログラムは管理者権限なしで実行されるため、ホストファイルを変更することはできません。私は正しいIPとホスト名を持っていますが、コンピュータがIPにホスト名を解決させる他の方法はありますか?

+1

マシンが使用しているDNSサーバーで、ホスト名が自動的に正しいIPに解決されないのは何ですか? – cadrell0

+0

サーバがDNSにないため、解決できません。 – akroy

答えて

2

これを解決する最も簡単な方法は、ホストファイルを変更してメインプログラムからそのサービスを呼び出す権限を持つサービスを作成することです。サービスは単一のコマンドを実行して終了します。サービスのステータスが高くなる可能性があるため、基本的に管理者権限を標準ユーザープログラムにカプセル化することができます。

0

かんたん回答:いいえ。

(残念ながら、答えはあまりにも単純すぎるため、SOは小さいです)。

1

HTTPリクエストを行っている場合は、ホスト名を解決する必要はありません。 URLのIPアドレスを使用し、HTTPヘッダーにホストヘッダーを渡します。

HttpWebRequest.Host Property

更新:申し訳ありませんが、証明書の要件を見ていません。私はあなたがインストール中にホストファイルを変更できるはずだと思う(通常、インストールは管理者権限のもとで行われるため)。興味のあるホスト名を127.0.0.1(ローカルマシン)に追加します。次に、アプリケーションはリスニングソケットを開いて、プロキシとして動作し、実際のWebサーバーにデータをチャネリングします。これは、ファイアウォールが有効になっているクライアントに応じて動作する場合と動作しない場合があります。

+1

証明書の名前に実際のDNS名が含まれている可能性があり、 'Host'プロパティで使用されているIPと一致しないため、SSL証明書の検証が失敗します。これが彼が避けようとしていることです。 – CodingGorilla

+0

私はRasDialを使って接続していますので、(私はRASの専門家ではありません)IPやホスト名の "電話番号"を与えることができます。電話番号としてホスト名を使用しない限り、接続の認証は機能しません。 – akroy

+0

@コーディングゴリラ最新の記事をご覧ください。 –

-3

これは私のために働いていた:1.お使いのWindowsのメニュー、メモ帳アプリケーションのための検索を開始し、右メモ帳のアイコンをクリックし

ステップを。

ステップ2.「管理者として実行」を選択し、メモ帳内でhostsファイルを含むフォルダ(/ windows/system32/drivers/etc)を参照します。

+0

これはプログラム的ではなく、管理者権限を使用しています... – akroy

-1
public bool ModifyHostsFile(string sEntryIPAddr, string sEntryURL) 
    { 
     try 
     { 
      using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"drivers\etc\hosts"))) 
      { 
       w.WriteLine(sEntryIPAddr+" "+ sEntryURL); 
       return true; 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
      return false; 
     } 
    } 
+0

このコードがOPに役立つ理由の説明を追加してください。これにより、今後の視聴者からの回答が得られます。詳細については、[回答]を参照してください。 –

+0

OPはhostsファイルを変更したくない –