c++如何读取HKEY_LOCAL_MACHINE\SECURITY下的键值
本帖最后由 pananning 于 2024-7-25 04:29 编辑通过此函数设置了权限
BOOL Privilege::SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
TOKEN_PRIVILEGES tp;
LUID luid;
if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
{
DWORD result = GetLastError();
PrintErrorMessage(result,TEXT("LookupPrivilegeValue error: "));
return false;
}
tp.PrivilegeCount = 1;
tp.Privileges.Luid = luid;
tp.Privileges.Attributes = bEnablePrivilege ? SE_PRIVILEGE_ENABLED : 0;
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL))
{
DWORD result = GetLastError();
PrintErrorMessage(result, TEXT("AdjustTokenPrivileges error: "));
return false;
}
if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
std::wcerr << L"The token does not have the specified privilege." << std::endl;
return false;
}
return true;
}
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &_hToken);
if (!SetPrivilege(_hToken, SE_BACKUP_NAME, TRUE) || !SetPrivilege(_hToken, SE_RESTORE_NAME, TRUE))
{
_tprintf(TEXT("SetPrivilege failed.\n"));
CloseHandle(_hToken);
}
其他路径的键值都可以读取,就HKEY_LOCAL_MACHINE\SECURITY不行
RegWorkshop也看不了,只有system有权限查看 权限问题 我记得这个和SAM一样的权限问题。 先用GetNameSecurityInfo获旧权限。然后用BuildExplicaiAccessWithName构造一个新的属性。在SetEntruesInAcl设置权限,最后SetNamedSeructiynfo设置回旧权限。 代码百度一堆。但是貌似这个方法,改了权限没法恢复回去。 Ramin2027 发表于 2024-7-25 09:30
权限问题
是权限问题,nsudo提权可以查看,不知道用c++怎么直接实现 DQQQQQ 发表于 2024-7-25 10:19
我记得这个和SAM一样的权限问题。 先用GetNameSecurityInfo获旧权限。然后用BuildExplicaiAccessWithName构 ...
多谢,我去查查
页:
[1]