実行ユーザー名を取得する方法
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 が含まれていると思いますので、特に意識する必要はありません。