gpt4 book ai didi

c# - 获得文件或文件夹的所有权

转载 作者:可可西里 更新时间:2023-11-01 12:46:23 24 4
gpt4 key购买 nike

在我拔掉剩下的头发之前,我想听听一些关于这方面的意见。
我正在尝试取得一个文件夹的所有权。我当然以管理员身份运行该程序,并且我确实有权获得所有权,因为我可以在资源管理器中更改所有者。

但是,如果管理员或我的帐户拥有它,我可以更改所有者,如果我已经拥有所有权,我可以更改权限。
如果我试图给自己一个文件的所有权,比如说属于 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 上尝试这个。
我在这里缺少什么?

最佳答案

我遇到了同样的问题,只是在这里发布给可能像我一样来这里搜索的其他人:

您需要在代码中显式启用 SeTakeOwnershipPrivilege,正如 Luke 上面提到的那样。我找到了这个 Process Privileges对处理这类事情很有帮助。

这是它修复我的代码的方法:

using System;
using System.Diagnostics;

// ...
using (new ProcessPrivileges.PrivilegeEnabler(Process.GetCurrentProcess(), Privilege.TakeOwnership))
{
directoryInfo = new DirectoryInfo(path);
directorySecurity = directoryInfo.GetAccessControl();

directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User);
Directory.SetAccessControl(path, directorySecurity);
}

关于c# - 获得文件或文件夹的所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com