如何在Windows中授予文件和文件夹的所有权

问题描述 投票:0回答:1

我遇到了一个非常烦人的问题,我花了一些时间来解决它。由于99%的互联网告诉我这是不可能的,我无法在stackoverflow上找到答案,我决定在这里发布。

我试图在我的Windows机器中更改文件夹/文件的所有权。这不是什么大问题,因为DirectorySecurtiy有一个很好的功能:“SetOwner()”。我得到了这个为我当前的帐户工作,但我不能让它为别人工作。每当我试图授予别人所有权时,我都会收到此错误:“安全标识符不允许是此对象的所有者”。

// Get folder or creates if not exists
DirectoryInfo dInfo = Directory.CreateDirectory(folderPath);

// Get user
IdentityReference user = new NTAccount(username);

// Set owner
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.SetOwner(user);
dInfo.SetAccessControl(dSecurity);

因此,如果我想授予自己所有权,此代码确实有效,但如果我想授予某人所有权,则此代码无效。该怎么办?

c# windows permissions
1个回答
0
投票

在进一步搜索互联网后,我在这个博客中找到了解决方案:https://fixingitpro.com/2011/07/08/set-owner-with-powershell-%E2%80%9Cthe-security-identifier-is-not-allowed-to-be-the-owner-of-this-object%E2%80%9D/

这很奇怪,我不知道为什么,但如果你使用unc路径它会工作。

UNC名称使用特定符号标识网络资源。这些名称由三部分组成:主机设备名称,共享名称和可选文件路径。这三个元素使用反斜杠组合:\ host-name \ share-name \ file_path

那么以前只为我自己工作的东西:D:\ {folderName}必须是:\\ {IP或servername} \ d $ \ {foldername}。如果您只测试完全相同的代码agian而不是使用不同的路径,它将起作用。如果有人可以解释为什么回到你自己的计算机的工作通过正常的路径不工作会很好。

别忘了以管理员身份运行您的应用程序

© www.soinside.com 2019 - 2024. All rights reserved.