• ベストアンサー

C言語でのOS判断について

Webから送信されたデータをC言語内でOS判断(MacかWindows)することは可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • syulen
  • ベストアンサー率71% (5/7)
回答No.6

環境変数にHTT_USER_AGENTが設定されていると思いますので、そこから取得できますよ。 ま、ウェブサーバーにもよるのですが。 ApacheやらIISやらであれば、基本は同じはずです。 ユーザーエージェントの書式は、ネットスケープ社の技術情報から取得できたはずです。 たしか、ブラウザ名、ブラウザバージョン、OS名、OSバージョンを入れましょうという指定があったかと思います。 ただし、Netscape、Mozila、Operaなどは、したがっていたはずですが、InternetExplorerはその標準に従っていなかったはずです。 また、標準の書式はありますが、ユーザーエージェントの内容は、ブラウザが自由に設定できるので、正規表現などで取ることが出来ません(難しい)。 それに、ユーザーエージェント情報をおくらないブラウザもあります。 携帯電話やロボットなどもウェブページへアクセス可能ですし、OSの指定がないものもありますので、お気をつけください。

tohiyo
質問者

お礼

参考になりました。ありがとうございました。

その他の回答 (5)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.5

CでCGIを作っているのですしょうか? epistemeさんおっしゃてますが ヘッダの情報しか判別の方法はありません。 http://www.kumei.ne.jp/c_lang/intro/no_84.htm ヘッダ情報はあくまでクライアントが送る情報ですので (javascriptも)偽装は可能です。

  • sisya
  • ベストアンサー率39% (97/244)
回答No.4

早急にと言う事でしたら JavaScriptで取得した判断情報を設定して submit()で飛ばすか Locateで情報を渡してリダイレクトしてみては如何でしょう?

tohiyo
質問者

補足

submitボタンを専用で用意ができないのです。 早急ではないので具体的に説明していただけないでしょうか・・・

回答No.3

#2の補足: > おそらくプロトコル・ヘッダ内にあるはずです。 HTTP User Agent ヘッダでしょうね。

回答No.2

> Webから送信されたデータをC言語内でブラウザ判別(NetscapeかInternet Explorer)することは可能なのでしょうか?JavaScriptでは判別はできるのですが・・・ その判別情報がデータ内にあるのなら、できるでしょう。 おそらくプロトコル・ヘッダ内にあるはずです。 RFCをお読みになればわかるのではないかと。

参考URL:
http://www.studyinghttp.net/rfc_ja/
回答No.1

送信されたデータ内に何らかの手掛かりがあればできるでしょうが、その手掛かりが必ずあるとは限らないので、'安全確実'な方法はないのでは?

tohiyo
質問者

補足

では、Webから送信されたデータをC言語内でブラウザ判別(NetscapeかInternet Explorer)することは可能なのでしょうか?JavaScriptでは判別はできるのですが・・・ 上記の結果をC言語のデータ内に送信したいのですが・・・

関連するQ&A