【发布时间】:2011-07-19 03:16:55
【问题描述】:
在我拔掉我剩下的头发之前,我想对此有所了解。
我正在尝试获取文件夹的所有权。当然,我以管理员身份运行该程序,并且我确实有权获得所有权,因为我可以在资源管理器中更改所有者。
但是,如果管理员或我的帐户拥有它,我可以更改所有者,如果我已经拥有所有权,我可以更改权限。
如果我试图给自己一个文件的所有权,比如说由 SYSTEM 拥有,那么我会得到一个未经授权的异常。
我用访问控制方法尝试了一些不同的东西,但没有任何效果,我认为这个最新的方法是直接出自书本的。
private static void makePerm(string file, NTAccount account)
{
FileInfo finfo = new FileInfo(file);
FileSecurity fsecurity = finfo.GetAccessControl();
//also tried it like this //fsecurity.ResetAccessRule(new FileSystemAccessRule(string.Format(@"{0}\{1}", Environment.UserDomainName.ToString(), Environment.UserDomainName.ToString()), FileSystemRights.FullControl, AccessControlType.Allow));
fsecurity.SetOwner(account);
finfo.SetAccessControl(fsecurity);
}
我正在 Windows 7 上尝试这个。
我在这里错过了什么?
【问题讨论】:
-
您似乎缺少的是 SYSTEM 的排名高于您和管理员。
-
您确定可以在资源管理器中获得系统拥有文件的所有权吗?你好像这么说,但太直白了。
-
是的,我知道,但是为什么我可以在资源管理器中将所有者从系统更改为管理员,但不能使用代码? AFAIK 管理员始终可以拥有任何东西。
-
您是否使用 Explorer 对 同一文件 进行测试?
-
好的,那么这个问题+1,但我没有更好的答案。
标签: c# windows permissions