実行ユーザー名を取得する方法

Windows のセキュリティシステムはユーザープリンシパルに基づきます。つまり、 誰がプログラムを実行しているか ということをセキュリティ設定の拠り所としています。 従ってプログラムがどのユーザーアカウントで実行されているか、ということは Windows では非常に重要です。

現在プログラムがどのユーザーとして実行されているか確認する方法としては、GetUserName API でユーザー名を 取得してそれを確認することが最も簡単でしょう。この API はバッファを受け取り、現在のユーザー名を そのバッファに書き込みます。

//#define _WIN32_WINNT 0x0501 // Windows XP
#define _WIN32_WINNT 0x0600   // Windows Vista

#include <windows.h>
#include <lmcons.h>
#include <tchar.h>
#include <stdio.h>

int main(int argc, LPTSTR argv[]) {

	TCHAR szUserName[UNLEN + 1];
	DWORD dwUNLen = UNLEN;

	if( !GetUserName( (LPTSTR) szUserName, &dwUNLen ) ) {
		printf("Error: %u", GetLastError() );
		return 1;
	}

	_tprintf( TEXT("%s\n"), szUserName );

	return 0;
}

尚このプログラムのビルド時には advapi32.lib をリンクする必要がありますので、 必要に応じて makefile を書き換えてください。Visual Studio をお使いなら、リンカの設定に advapi32.lib が含まれていると思いますので、特に意識する必要はありません。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説