是否可以禁止取得文件的所有权?

c00*_*0fd 1 c++ windows winapi windows-security dacl

我很好奇是否有办法阻止用户(包括属于管理员组的用户)获取文件的所有权?

我最初是从我在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);
Run Code Online (Sandbox Code Playgroud)

但是完成所有这些后,我仍然可以通过Windows资源管理器作为管理员获取此文件的所有权:

在此输入图像描述

Cod*_*ray 7

不,这是不可能的.具有管理权限的帐户的本质是它们可以基本上按照自己的意愿行事.管理员拥有该系统.无论您如何设置权限,他们始终可以拥有文件的所有权.

您所做的一切就是让管理员更难以更改文件,因为他们必须首先拥有所有权.这是有益的; 它甚至可以防止管理员进行无意的更改.没有人"意外"获得文件的所有权.

正常的解决方法是为每个人分配非管理帐户(这实际上是你应该做的事情),或者使用一些外部手段加密文件.

结论:不要让人们不相信对您的计算机或文件的管理访问权限.