반응형

Windows Programming 11

오류(exception) 발생시 Debug 메시지창 띄우냐 마느냐 Config

Configuring Automatic Debugging Users can configure automatic debugging to help them determine why their system or an application has stopped responding. Configuring Automatic Debugging for System Crashes To configure the target computer to generate a crash dump file when the system stops responding, use the System application in Control Panel. Click Advanced system settings, which displays the ..

Windows Programming 2010.02.17

특수 디렉토리 가져오기

1. 윈도우 디렉토리 UINT GetWindowsDirectory(LPYSTR lpBuffer, UINT uSize); 2. 시스템 디렉토리 UINT GetSystemDirectory(LPTSTR lpBuffer, UINT uSize); -> System32 서브폴더 3. 특수 폴더 절대 경로 조사 1. HRESULT SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST *ppidl); nFolder - 특수폴더 ID (윈도우즈 API정복 p.1827참고) LPITEMIDLIST pidl; 의 주소를 넘겨주고 값을 받아온다. 이값으로부터 절대 경로 구할수 있음. 2. BOOL SHGetPathFromIDList(LPCITEMIDLIST..

Windows Programming 2010.02.17

프로세스에서 URL이 있는 IE를 실행시킬때 (notepad등)

1. STARTUPINFO 셋팅. 2. IE 커맨드 셋팅. 3. CreateProcess 호출 (위의 값은 parameter로 사용됨) void show_notice(RegData *reg_data, TCHAR *url) { STARTUPINFO si; SecureZeroMemory(&si, sizeof(si) ); si.cb = sizeof(si); // 비스타에서 테스트 할 필요 있음. XP에서는 잘 됨. si.lpDesktop = L"WinSta0\\default"; PROCESS_INFORMATION pi; TCHAR cmd[256] ={0,}; TCHAR ie[64] = L"C:\\Program Files\\Internet Explorer\\iexplore.exe"; //TCHAR url1[12..

Windows Programming 2009.10.08

Windows에서 한글 깨지지 않게 파일에 저장 (로그파일 생성시 유용)

#include #include #include #include #include #include #include #include using namespace std; #define DEB #define MAX_CHAR_SIZE 256 #ifdef DEB #define LOG(...) do { _write(file, __VA_ARGS__ ); } while(0) #else #define LOG(...) do {} while(0) #endif int file; int main() { wcout.imbue(std::locale("kor")); //int file; WCHAR buf[256] =L"dddd매크로"; WCHAR buf2[2]={0,}; WORD wd = 0xfeff; memcpy(buf2, &wd..

Windows Programming 2009.09.04

UNICODE 처리

C Runtime 함수 char - TCHAR : CHAR, WCHAR char* - TCHAR * : CHAR*, WCHAR* TCHAR buffer[100] = TEXT("A STRING"); WCHAR buffer[100] = L"A STRING"; strlen, wcslen -> _tcslen : 길이는 문자열 변경이 없으므로 _tcslen 사용가능 strcpy, wcscpy -> _tcscpy -> _tcscpy_s : 버퍼 오버런을 막기위해 s 함수 사용권장 (lstrcat, lstrcpy 사용 금지!) strcat -> _tcscat -> _tcscat_s :버퍼 오버런을 막기위해 s 함수 사용권장 Cch(문자열 갯수)를 가져올때는 _countof CB(바이트 수)를 가져올때는 sizeof ..

Windows Programming 2009.03.24

[WINDOWS] 사용자 계정의 패스워드를 Disable 시키는 함수(User Lock)

윈도우2000 에서 어떤 계정이 GINA에서 로그인할 때 그 사용자의 패스워드를 disable 시켜서 로그인 하지 못하게 할때 쓰기 위해 만들었던 함수이다. 파라미터로 유저이름을 넘겨주면, 해당 유저를 lock한다. int lock_user(char * user_name) { DWORD dwLevel = 2; USER_INFO_2 ui, *pui; NET_API_STATUS nStatus; WCHAR wszUserName[UNLEN+1]; // Unicode user name MultiByteToWideChar( CP_ACP , 0 , user_name , strlen(user_name)+1 , wszUserName , sizeof(wszUserName)/sizeof(wszUserName[0]) ); n..

Windows Programming 2007.03.19

[WINDOWS] 프로세스를 실행시키는 함수

윈도우프로그래밍에서 프로세스를 실행시키는 방법 중에 하나가 CreateProcess API를 이용하는 방법이다. 파라미터로 프로그램의 경로+실행파일명 을 넘겨주면 된다. 예) create_process("c:\\abc.exe"); // 프로세스를 실행시키는 함수 int create_process(char *cmd) { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); memset(&pi, 0, sizeof(pi)); if(!(CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))) { return FALSE; } WaitForIn..

Windows Programming 2007.03.18

[WINDOWS] 파일(IPC포함) 의 권한 속성을 부여

윈도우2000에서 서비스로 등록하여 돌아가는 프로그램과 일반 유저들이 로그온시에 그 유저권한으로 돌아가는 프로세스와의 통신을 할 필요가 있어서 IPC를 사용하던중에 문제가 발생했었다. 서비스로 등록된 프로그램에서 IPC를 이용하기 위해 메모리에 파일을 생성하였고, 일반 유저들이 로그온하여 실행시킨 프로세스가 서비스로 등록된 프로세스와 통신을 시도할때, access deny가 일어났다. (시스템영역의 프로세스와 일반유저영역의 프로세스간의 파일 억세스 권한이 달라서) 즉 억세스 권한이 거부되었기 때문에 억세스할수 있는 권한으로 파일을 생성해 주는 코드가 바로 아래 코드이다. 예) 아래 함수의 리턴값을 가져와서 파라미터로 넘겨준다. SECURITY_ATTRIBUTES sa *psa; sa = set_acces..

Windows Programming 2007.03.17
반응형