我遇到了一个非常烦人的问题,我花了一段时间才解决它。由于 99% 的互联网都告诉我这是不可能的,而且我在 stackoverflow 上找不到答案,所以我决定将其发布在这里。我试图更改 Windows 机器中文件夹/文件的所有权。这不是什么大问题,因为 DirectorySecurtiy 有一个很好的函数:“SetOwner()”。我让它为我的当前帐户工作,但我无法让它为其他人工作。每次我试图授予其他人所有权时,我都会收到此错误:“不允许安全标识符成为该对象的所有者”。// Get folder or creates if not existsDirectoryInfo dInfo = Directory.CreateDirectory(folderPath);// Get userIdentityReference user = new NTAccount(username);// Set ownerDirectorySecurity dSecurity = dInfo.GetAccessControl();dSecurity.SetOwner(user);dInfo.SetAccessControl(dSecurity);因此,如果我想授予自己所有权,但如果我想授予其他人所有权,则此代码确实有效。该怎么办?
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
进一步搜索互联网后,我在这个博客中找到了解决方案:https ://fixingitpro.com/2011/07/08/set-owner-with-powershell-%E2%80%9Cthe-security-identifier-is-not-允许成为此对象的所有者%E2%80%9D/
这很奇怪,我不知道为什么,但如果你使用 unc 路径,它就会起作用。
UNC 名称使用特定符号标识网络资源。这些名称由三部分组成:主机设备名称、共享名称和可选文件路径。这三个元素使用反斜杠组合:\host-name\share-name\file_path
所以过去只为我自己工作的:D:\{folderName} 必须是:\\{IP or servername}\d$\{foldername}。如果您只测试完全相同的代码而不是使用不同的路径,它将起作用。如果有人可以向我解释为什么路由回您自己的计算机确实可以通过正常路径工作,那就太好了。
不要忘记以管理员身份运行您的应用程序
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消