[c++] C++에서의 윈도우 자원 관리 프로그래밍

C++에서는 Windows API를 사용하여 윈도우 시스템 자원을 관리할 수 있습니다. 이를 통해 파일 및 폴더를 생성, 수정, 삭제하고, 프로세스 또는 서비스를 제어할 수 있습니다.

파일 및 폴더 처리

C++에서는 Windows API 함수인 CreateFile, ReadFile, WriteFile, DeleteFile 등을 사용하여 파일을 생성하고, 읽고, 쓰며, 삭제할 수 있습니다. 또한, CreateDirectory, RemoveDirectory 함수를 사용하여 폴더를 생성하고 삭제할 수 있습니다.

#include <windows.h>

int main() {
    HANDLE hFile = CreateFile("example.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile != INVALID_HANDLE_VALUE) {
        // 파일에 쓰기
        CloseHandle(hFile);
    }
    return 0;
}

프로세스 관리

C++에서는 Windows API 함수인 CreateProcess를 사용하여 외부 프로그램을 실행할 수 있고, TerminateProcess를 사용하여 프로세스를 종료할 수 있습니다.

#include <windows.h>

int main() {
    PROCESS_INFORMATION pi;
    STARTUPINFO si = { sizeof(si) };
    if (CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
        // 프로세스 생성 성공
        WaitForSingleObject(pi.hProcess, INFINITE);
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
    }
    return 0;
}

서비스 관리

C++에서는 Windows API 함수인 OpenSCManager, CreateService, StartService, ControlService 등을 사용하여 서비스를 관리할 수 있습니다.

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

int _tmain(int argc, TCHAR *argv[]) {
    SC_HANDLE schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    if (schSCManager != NULL) {
        SC_HANDLE schService = CreateService(schSCManager, "MyService", "MyService",
            SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
            "C:\\Path\\To\\MyService.exe", NULL, NULL, NULL, NULL, NULL);
        if (schService != NULL) {
            // 서비스 생성 성공
            CloseServiceHandle(schService);
        }
        CloseServiceHandle(schSCManager);
    }
    return 0;
}

프로그램에서 Windows API를 사용하여 자원을 관리하는 방법에 대한 자세한 내용은 Microsoft 공식 문서를 참고하세요.