我遇到了一個非常煩人的問題,我花了一段時間才解決它。由于 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條經驗 獲得超5個贊
進一步搜索互聯網后,我在這個博客中找到了解決方案: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 關注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消