The following example uses the GetComputerName, GetUserName, GetSystemDirectory, GetWindowsDirectory, and ExpandEnvironmentStrings functions to get information that describes the system configuration.
C++
#include <windows.h> #include <tchar.h> #include <stdio.h> TCHAR* envVarStrings[] = { TEXT("OS = %OS%"), TEXT("PATH = %PATH%"), TEXT("HOMEPATH = %HOMEPATH%"), TEXT("TEMP = %TEMP%") }; #define ENV_VAR_STRING_COUNT (sizeof(envVarStrings)/sizeof(TCHAR*)) #define INFO_BUFFER_SIZE 32767 void printError( TCHAR* msg ); void main( ) { DWORD i; TCHAR infoBuf[INFO_BUFFER_SIZE]; DWORD bufCharCount = INFO_BUFFER_SIZE; // Get and display the name of the computer. bufCharCount = INFO_BUFFER_SIZE; if( !GetComputerName( infoBuf, &bufCharCount ) ) printError( TEXT("GetComputerName") ); _tprintf( TEXT("\nComputer name: %s"), infoBuf ); // Get and display the user name. bufCharCount = INFO_BUFFER_SIZE; if( !GetUserName( infoBuf, &bufCharCount ) ) printError( TEXT("GetUserName") ); _tprintf( TEXT("\nUser name: %s"), infoBuf ); // Get and display the system directory. if( !GetSystemDirectory( infoBuf, INFO_BUFFER_SIZE ) ) printError( TEXT("GetSystemDirectory") ); _tprintf( TEXT("\nSystem Directory: %s"), infoBuf ); // Get and display the Windows directory. if( !GetWindowsDirectory( infoBuf, INFO_BUFFER_SIZE ) ) printError( TEXT("GetWindowsDirectory") ); _tprintf( TEXT("\nWindows Directory: %s"), infoBuf ); // Expand and display a few environment variables. _tprintf( TEXT("\n\nSmall selection of Environment Variables:") ); for( i = 0; i < ENV_VAR_STRING_COUNT; ++i ) { bufCharCount = ExpandEnvironmentStrings(envVarStrings[i], infoBuf, INFO_BUFFER_SIZE ); if( bufCharCount > INFO_BUFFER_SIZE ) _tprintf( TEXT("\n\t(Buffer too small to expand: \"%s\")"), envVarStrings[i] ); else if( !bufCharCount ) printError( TEXT("ExpandEnvironmentStrings") ); else _tprintf( TEXT("\n %s"), infoBuf ); } _tprintf( TEXT("\n\n")); } void printError( TCHAR* msg ) { DWORD eNum; TCHAR sysMsg[256]; TCHAR* p; eNum = GetLastError( ); FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, eNum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), sysMsg, 256, NULL ); // Trim the end of the line and terminate it with a null p = sysMsg; while( ( *p > 31 ) || ( *p == 9 ) ) ++p; do { *p-- = 0; } while( ( p >= sysMsg ) && ( ( *p == '.' ) || ( *p < 33 ) ) ); // Display the message _tprintf( TEXT("\n\t%s failed with error %d (%s)"), msg, eNum, sysMsg ); }
'old drawer > C, C++, MFC' 카테고리의 다른 글
[MFC] 버튼에 이미지 입히기 (0) | 2013.02.06 |
---|---|
WinExec() CreateProcess() ShellEcecute() ShellExecuteEx() (0) | 2013.02.01 |
[MFC/C++] SHGetFileInfo 를 이용한 파일 속성 파악 (0) | 2013.01.11 |
[MFC/C++] 레지스트리 값 쓰기/읽기 (1) | 2013.01.11 |
[C/C++] 레지스트리 사용법 (0) | 2013.01.11 |