주요 API 함수는 다음과 같습니다. (MSDN참고)
OpenProcessToken Function
LookupPrivilegeValue Function
AdjustTokenPrivileges Function
우선 OpenProcessToken로 특권설정가능한 토큰핸들을 얻으신후. LookupPrivilegeValue로 원하는 특권의 특권값을 LUID구조체로 얻습니다. 그리고 TOKEN_PRIVILEGES에 값을 채우시고 그것을 AdjustTokenPrivileges로 넘기셔서 적용하면 끝~ 입니다. ^^
디버그특권(E_DEBUG_NAME) 외에도 시스템종료 특권(SE_SHUTDOWN_NAME)나 보안특권(SE_SECURITY_NAME)과 같은 다양한 특권을 얻을수있는데.. 그건 winnt.h파일을 읽어보시거나 MSDN을 참고하시면 자세히 설명되있습니다.
그리고 TOKEN_PRIVILEGES구조체의 배열의 크기를 직접조정하셔서 여러 특권정보를 채우시고
AdjustTokenPrivileges로 넘기시면 한번에 여러특권을 취득하실수도 있어보입니다.. ^^
첨부 : 디버그특권을 설정하는 예제