プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

VC++でないCでというのが意味がよくわかりませんが、WIN32APIを使わないで


ということですか?

xp なら環境変数 COMPUTERNAME にコンピュータ名が、
USERNAME にユーザー名が入ってますから、これを見るというのはどうでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/13 09:40

★サンプル



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 に文字列の長さがセットされる。
・以上。おわり。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/14 01:25

★Win32 API の関数ですか?


・もしそうなら次の2つで取得できます。
・『GetComputerName』でコンピュータ名を取得可能。
・『GetUserName』でユーザ名を取得可能。

宣言:
・BOOL GetComputerName(
LPTSTR lpBuffer, // コンピュータ名
LPDWORD lpnSize // 名前バッファのサイズ
);

・BOOL GetUserName(
LPTSTR lpBuffer, // 名前バッファ
LPDWORD nSize // 名前バッファのサイズ
);

・短いですが参考になりましたか。→詳しくはこの関数を検索しましょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/13 09:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!