반응형

윈도우프로그래밍 9

오류(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

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

[WINDOWS] 로그온시에 자동으로 프로세스를 실행시킬 수 있도록 레지스트리에 시작메뉴 등록

아래 코드는 시작메뉴의 레지스트리에 프로그램을 등록하여, 사용자가 로그온시에 자동으로 실행되는 프로그램을 만들때, 유용하게 쓸 수 있다. setting 값을 TRUE로 설정하면 레지스트리에 등록을 하고, FALSE 로 설정하면 레지스트리에서 삭제한다. 예) set_registy_start_program(TRUE, "hello", "c:\\hello.exe"); -> 등록 set_registy_start_program(FALSE, "hello", NULL); -> 삭제 static int set_registy_start_program(BOOL setting, LPCSTR valuename, LPCSTR exefilename) { HKEY key; LONG ret; if(setting) { if(valuen..

Windows Programming 2007.03.17
반응형