SetNamedSecurityInfo执行将重新启动系统
SetNamedSecurityInfo execution restarts system
我正在尝试更改文件夹的审核设置。当我在不同的机器上测试代码时,我发现SetNamedSecurityInfo调用会重新启动系统。这种情况发生在一些机器上。弹出窗口显示"Windows遇到安全问题,将在一分钟内重新启动"。我不知道原因。任何帮助都将不胜感激!
HANDLE hProcess = GetCurrentProcess();
HANDLE hToken;
DWORD val;
BOOL result;
result = OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken);
if (result == 0)
{
printf("nBreak After open process");
return 0;
}
else{
printf("ncontinue after open process");
}
// Used for reading SACL's
result = SetPrivilege(hToken, SE_SECURITY_NAME, TRUE);
if (result == 0)
{
printf("nBreak After setprivilege");
return 0;
}
else{
printf("ncontinue after open process");
}
CloseHandle(hToken);
retval = GetNamedSecurityInfo(file, SE_FILE_OBJECT, SACL_SECURITY_INFORMATION, &owner, NULL, NULL, &sacl, &psd);
if(retval != 0)
{
wcout << "GetNamedSecurityInfo failed with error: " << retval << endl;
return -1;
}
printf("nBuilt trust successfully before");
BuildTrusteeWithSid(ptrust,psd);
printf("nBuilt trust successfully");
printf("ntrying to modify ...");
EXPLICIT_ACCESS ea;
PACL pNewSACL = NULL;
ACCESS_MODE AccessMode = SET_AUDIT_SUCCESS; //SET_AUDIT_SUCCESS, SET_AUDIT_FAILURE
DWORD dwAccessRights = 0X410D0060;
DWORD dwInheritance = CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE;
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
ea.grfAccessPermissions = dwAccessRights;
ea.grfAccessMode = SET_AUDIT_SUCCESS;
ea.grfInheritance = dwInheritance;
ea.Trustee = *(ptrust);
DWORD dwRes = SetEntriesInAcl(1, &ea, sacl, &pNewSACL);
if(dwRes != ERROR_SUCCESS)
{
printf("SetEntriesInAcl() error %un", dwRes);
}
else
{
printf("SetEntriesInAcl() is OKn");
}
dwRes = SetNamedSecurityInfo(file, SE_FILE_OBJECT, SACL_SECURITY_INFORMATION, NULL, NULL, NULL, pNewSACL);
if(dwRes != ERROR_SUCCESS)
{
printf("SetNamedSecurityInfo() error %un", dwRes);
}
else
printf("SetNamedSecurityInfo() is OKnn");
LocalFree(psd);
如果系统无法记录安全审核,则有一个全局策略条目控制关闭。
请参阅:"计算机配置\Windows设置\本地策略\安全选项"审核:如果无法记录安全审核,则立即关闭系统"
这可能与结合使用
"计算机配置\Windows设置\本地策略\安全选项"审核:审核全局系统对象的访问"
相关文章:
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 重新启动后,线程无法在 while 循环中再次运行
- 在程序和基于文本的游戏和C++内重新启动程序
- 在程序/基于文本的游戏/C++内重新启动程序
- Qt/C++ 系统单元启动/停止时的信号
- 为什么使用 exec() 重新启动程序不能正常工作?
- 即使在我关闭应用程序并重新启动它后,如何保持我的 ID 被阻止?
- 有没有办法在不重新启动或注销的情况下加载游标?
- IO服务重新启动后,Boost最后期限计时器持续触发
- 在C++中重新启动随机数序列
- 稍后在构造函数中重新启动异常指令删除此指令
- 如何获取代码::块以在代码::块重新启动后保持库的配置?
- 我想在我设置的几秒钟后重新启动我的程序
- 如何使重新启动此循环,当用户输入 1 时,并在 0 时停止
- 系统会冻结如果我使用运行的守护程序重新启动或关闭,该守护程序可以使用Fanotify控制对文件的访问
- SetNamedSecurityInfo执行将重新启动系统
- C++:系统调用重新启动 ntpd ->错误的端口
- Linux 系统不允许创建套接字,因为"Too many open files"*即使在重新启动后*
- 我想在系统重启时重新启动我的应用程序