2016-06-22 62 views
1

我正在編寫一個需要創建文件夾的C#應用​​程序,然後爲DOMAIN \ Users提供完整權限。當我嘗試通過Environment.UserDomainName + @"\Users"時,它會拋出System.Security.Principal.IdentityNotMappedException。目前,我有這樣的代碼:在目錄上設置整個組的訪問權限

DirectoryInfo dirInfo = new DirectoryInfo(path); 
DirectorySecurity dirSec = dirInfo.GetAccessControl(); 

// All users should have full control. 
dirSec.AddAccessRule(new FileSystemAccessRule(Environment.UserDomainName + @"\Users", FileSystemRights.FullControl, AccessControlType.Allow)); 

dirInfo.SetAccessControl(dirSec); 

我怎樣才能讓這個「工作」,如允許用戶存儲在path目錄的完全控制權?

這是一個完整的異常:

Exception

+1

代碼看起來不錯。無論出於何種原因,它都找不到用戶名。我在我的機器上使用了您的代碼,並按預期工作了100%。也許仔細檢查一下您的域\用戶組是否存在?也許你正在測試的機器沒有加入到域中? –

+0

@DavidGreilach是的,它當然存在:http://i.imgur.com/7Wb84VE.png。 - 我也檢查了什麼'Environment.UserDomainName + @「\ Users」'返回,這一切都如預期。 – carefulnow1

+0

目前,我只是在我的本地機器上測試它,但我打算在家用計算機上的開發完成後在網絡上使用它。 – carefulnow1

回答

3

我做我的電腦上的一些檢測,發現添加域用戶,當這個工作:

Environment.UserDomainName + @"\Users" 

對於本地計算機帳戶,我必須這樣做:

@".\Users" 

由於您正在測試你的家用電腦我假設你不在一個域上,並試圖添加本地計算機用戶組。

+0

所以我需要根據系統類型(網絡或本地)做兩個不同的版本? – carefulnow1

+0

如果是這樣,我猜它會在try和catch語句中工作。 – carefulnow1

+0

你可以做一個嘗試捕捉或者只是測試它的域名是否首先在本地執行,如果它不是的話 –