我很好奇是否有办法阻止用户(包括属于 admin 组的用户)取得文件的所有权?
我最初是通过在 Local System
帐户下运行的服务创建此类文件的。然后我将该文件的 DACL
设置为 D:(A;OICI;GA;;;SY)
只让 SYSTEM
帐户拥有完全访问权限,并将 my service
设置为所有者:
DWORD dwRes = ::SetNamedSecurityInfo(
strDataFilePath,
SE_FILE_OBJECT,
OWNER_SECURITY_INFORMATION, // change only the object's owner
pMyServiceUserSid, // User SID for my service
NULL,
NULL,
NULL);
但在完成所有这些之后,我仍然可以通过 Windows 资源管理器以管理员身份获得此文件的所有权:
最佳答案
不,这是不可能的。具有管理权限的帐户的本质是他们基本上可以做他们想做的事。管理员拥有系统。无论您如何设置权限,他们始终可以获得文件的所有权。
您所做的一切只会让管理员更难更改文件,因为他们必须首先取得所有权。这是有好处的;它甚至可以防止管理员进行无意的更改。没有人会“意外地”取得文件的所有权。
正常的解决方法是为每个人分配非管理帐户(这确实是您应该做的),或者使用一些外部方式加密文件。
底线:不要向您不信任的人授予对您的机器或文件的管理访问权限。
关于c++ - 是否可以禁止取得文件的所有权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379203/