• ベストアンサー

C言語におけるコンピュータ名・ユーザ名の取得方法

C言語で自分のコンピュータ名とログインユーザ名を取得するには、 どのようにプログラムを組めば良いでしょうか? (VC++ではなくCで実現は可能でしょうか?) OSバージョンはWindowsXPです。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

VC++でないCでというのが意味がよくわかりませんが、WIN32APIを使わないで ということですか? xp なら環境変数 COMPUTERNAME にコンピュータ名が、 USERNAME にユーザー名が入ってますから、これを見るというのはどうでしょう?

xf710
質問者

お礼

>VC++でないCでというのが意味がよくわかりませんが、 >WIN32APIを使わないでということですか? 誤った表現となり申し訳ありませんでした。 sakusaker7さんの解釈で合っております。 環境変数をgetenvで取得したら、 コンピュータ名/ユーザ名共に取得する事ができました。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★サンプル TCHAR szName[ MAX_COMPUTERNAME_LENGTH + 1 ]; // コンピュータ名 TCHAR szUser[ 256 + 1 ]; // ユーザ名 DWORD dwNameSize; // 取得したコンピュータ名の文字列の長さ DWORD dwUserSize; // 取得したユーザ名の文字列の長さ if ( GetComputerName(szName,&dwNameSize) ){ // 正常 } else{ // エラー } if ( GetUserName(szUser,&dwUserSize) ){ // 正常 } else{ // エラー } ・バッファ szName、szUser に文字列がセットされる。 ・文字列数 dwNameSize、dwUserSize に文字列の長さがセットされる。 ・以上。おわり。

xf710
質問者

お礼

ご丁寧にサンプルソースまで書いて頂きありがとうございました。 実際に動かして確認したいと思います。

すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★Win32 API の関数ですか? ・もしそうなら次の2つで取得できます。 ・『GetComputerName』でコンピュータ名を取得可能。 ・『GetUserName』でユーザ名を取得可能。 宣言: ・BOOL GetComputerName( LPTSTR lpBuffer, // コンピュータ名 LPDWORD lpnSize // 名前バッファのサイズ ); ・BOOL GetUserName( LPTSTR lpBuffer, // 名前バッファ LPDWORD nSize // 名前バッファのサイズ ); ・短いですが参考になりましたか。→詳しくはこの関数を検索しましょう。

xf710
質問者

お礼

質問前に自分で調べたところ同関数の存在は分かっていたものの Win32APIの使用方法等がよく分からずにいたところでした。 Win32APIについて学習したいと思います。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A