取得文件或文件夹的所有权

在我拔出其余的头发之前,我希望得到一些input。
我正在尝试取得一个文件夹的所有权。 我当然是以pipe理员身份运行程序,因为我可以在资源pipe理器中更改所有者,所以我有权利拥有所有权。

但是,如果pipe理员或我的帐户拥有它,我可以更改所有者,如果我已拥有所有权,则可以更改权限
如果我试图给自己一个文件的所有权,让我们说SYSTEM拥有,那么我得到一个unuthorizedexception。

我已经用访问控制方法尝试了一些不同的东西,但没有任何作用,我认为这个最新的方法是直接的书。

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); } 

你是否首先通过UAC提升你的流程? 在Windows 7上,如果没有UAC升级,您的进程将使用权限较低的令牌运行。