• ベストアンサー

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/245)
回答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

  • iPhoneアプリのobjective-CとC言語について

    プログラミング初心者です。 iPhoneアプリを開発したいと思っているんですが、 まだMacを持っていません。 なので、Windows環境でプログラミングになれておこうと思っているんですが、どのような言語がいいでしょうか? objective-CがC言語ベースだということで、最近C言語を初めて見たんですけど、どうでしょう?

  • C言語 Linux Mac

    Mac Linux C言語 MacでLinuxをダウンロードするにはどうすれば良いのでしょうか? (種類が多くて困っています) 今日C言語を主に扱う会社に面接に行ってきて、帰り際に「Linux上で動くC言語のMACアドレスを検知するプログラムを一週間後までに作ってきてくれ」と頼まれました。 OSとしてはMacを使っていて、まずはLinuxをダウンロードしたいのですが種類が多すぎて選べません。 Linux上で動くC言語のプログラムを作りたい場合どのLinuxの種類をダウンロードするのが適切でしょうか? Web系(HTML,CSS,JavaScript)の職業訓練を半年受けていたので本当に基本的な事はわかってると思うのですが VirtualBoxでLinuxをダウンロードする際「Download VirtualBox for Linux Hosts」まで行くのはわかるのですが、その後種類が多く困っています。 どれをダウンロードするのが適切でしょうか?(画像の画面の場合です。)

  • C言語 お勧めの学習用Linux系OS

    現在わたしは大学でプログラミング(C言語)の勉強をしているのですが、使っている自分のPCはWindowsです。 デュアルブートをするのは、難しそうなので、1CD Linuxを使用したいと思っております。 1CD LINUXでC言語学習にちょうど良いOSを教えてください。

  • MacでC言語を使いアプリケーションを作っています。

    前の質問でおかしな質問をしてしまったのでここで改めて質問します。 今、MacでWindowsのアプリケーションをつくろうとしています。しかし、Windows固有の関数をMacではどのように記述すればよいかが分からないので全然進みません。MacでC言語を解説しているページは少なく、Windows関数はMacでどうするのかといった解説はもちろんありません。Macにしようとしているアプリケーションはパワポケのパスメってやつで、プログラムの言語はC++言語です。 http://f1.aaa.livedoor.jp/~pasume/pass/pasume.htm 上のサイトの『PM_GB1 Ver1.0』というアプリケーションです

  • C言語でメール送信

    C言語でメール送信プログラムを作成する必要が 出てきました。(C++ではありません) 環境はWindowsです。 STMPに接続して・・・などの手順はなんとく調べたのですが、 実装となるとさっぱりです。 ご存知のからよろしくお願い致します。

  • SSLをC言語でプログラミング

    C言語を用いてSSLを実装するプログラムを 作りたいと思っていますが、行き詰まっています。 わかる方いたらよろしくお願いします。 OSはWindows2000で動かしたいと思っています。

  • C言語の種類

    C言語とかC++とかC#とか色々と種類がありますが、何が違うのでしょうか。あと、自分がどの種類のCを使ってるかはどうやったら確認できるのでしょうかまた、C言語におけるポインタの役割はメモリの節約という認識でよいですか? また、別件ですが、Javaという言語は何が出来るのでしょうか。 web系の言語なのですかね。

  • C言語のコンパイルについて...。

    あの、C言語を勉強しているのですが、コンパイル法がわかりません。  作成は ”秀丸”で行っています。MS-DOSプロントでコンパイルは、どうやれば、できるのでしょうか?  Visual C は持っていますがインストしていません。    OSはWindows2000です。    コンパイルの手順や いいコンパイルソフトがあればお願いします。

  • Windowsはいったい何言語で書かれているのでしょうか?

    OSのWindowsですがいったい何言語で書かれているのでしょうか? 普段使用しているアプリケーションなどはCやC++などですがOSがCで書かれているとは聞いたこともありません。どのような言語で書かれているのでしょうか?

  • C言語の解読

    C言語は、まったく未経験でソフトだけは持っています。教えてgooで "OS" や "google" はC言語で書かれている。大概のプログラムはC言語で書ける。というので興味があります。しかし、今からC言語の仕事をする自信はありません。C言語で書かれているプログラムの内容を理解するにはどのくらい時間がかかるのでしょうか?どこかでOSのソースを見ることなどできないでしょうか?

専門家に質問してみよう