불평등되지 않은 계정 (C, Windows)에서 토큰 조정
-
06-07-2019 - |
문제
프로세스에 디버그 권한이 있는지 확인하기 위해 다음 코드 (MSDN의 약간 수정 된 샘플)를 사용하고 있습니다. 내가하지 않으면 설정하려고합니다.
int SetDebugPriv()
{
HANDLE TokenHandle;
LUID lpLuid;
TOKEN_PRIVILEGES NewState;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
{
//failed
return 0;
}
if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
{
//failed
CloseHandle(TokenHandle);
return 0;
}
NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = lpLuid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
{
//failed
CloseHandle(TokenHandle);
return 0;
}
CloseHandle(TokenHandle);
return 1;
}
이제 Windows XP 및 2003의 특정 계정에 따라 토큰을 설정하려고 할 때 액세스 거부 오류가 발생합니다. 내 생각에 나는 그렇게 할 권한이 없기 때문에 특정 토큰을 설정할 수 없다는 것입니다. 권한이 낮은 비 관리 계정 또는 계정에서 디버그 토큰을 어떻게 설정합니까?
코드에 감사드립니다.
감사해요
해결책
당신은 할 수 없습니다. 가능하다면 대규모 보안 구멍이 될 것입니다 (Sedebugprivilege는 관리자보다 더 많은 모조가 있습니다).
AdvernTokenPrivileges는 토큰이 가지고있는 특권을 켜지 만 활성화되지는 않습니다. 예를 들어, SeshutdownPrivilege가 그 중 하나입니다.
사용자 계정에 권한을 추가 한 다음 사용자가 로그 아웃하고 다시 들어와야합니다 (특권이있는 새 토큰을 얻으려면).
프로그래밍 방식으로 사용자 계정에 권한을 추가하려면 다음부터 시작하십시오. http://support.microsoft.com/kb/132958
제휴하지 않습니다 StackOverflow