2012-09-11 120 views
2

我有一個應用程序用於執行一些操作以隔離域上的用戶,例如創建Active Directory結構,用戶和組以及將用戶分配到不同的組。跨域設置文件夾權限

一旦在AD中創建了所有內容,我想爲我新創建的AD組中的一個新創建的文件夾分配訪問權限。

我想從本地計算機上運行應用程序在不同的域上,而不必登錄到域中的計算機上,然後從那裏運行應用程序。

除了設置訪問規則之外,我的應用程序中的所有內容似乎都能在本地機器上正常工作;失敗:

「部分或全部標識引用無法翻譯」。

從域內運行時,代碼工作正常。我一直在使用模擬也試過,但這個並沒有區別

if (Directory.Exists(sDirectory)) 
    { 
     using (Impersonation impUser = new Impersonation(sAdminUserName, _sDomain, sAdminPassword)) 
     { 
     DirectoryInfo diClientDirectory = new DirectoryInfo(sDirectory); 
     DirectorySecurity dsClientDirectory = diClientDirectory.GetAccessControl(); 
     FileSystemAccessRule fsAccessRules = new FileSystemAccessRule(sSecurityGroup, FileSystemRights.FullControl, (InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit), PropagationFlags.InheritOnly, AccessControlType.Allow); 

     **dsClientDirectory.AddAccessRule(fsAccessRules); //THIS LINE THROWS THE EXCEPTION** 
     diClientDirectory.SetAccessControl(dsClientDirectory); 
     } 

回答

0

這通常意味着該組授予的權限不存在或無法在目標機器上得到解決。檢查具有該名稱的目標域中是否存在組,或者域之間是否存在適當的信任關係。

+0

不過,如上所述,代碼在域內的機器上運行時運行成功,所以我原以爲它不太可能成爲您的第一個不存在的組的建議,否則應該失敗呢?該組確實存在,因爲它是在代碼中創建的,或者在測試過程中甚至在本週早些時候創建!這可能是一個解決問題,但......所有其他操作工作,如創建AD對象和目錄本身,所以我會認爲信任是好的。它只是權限失敗 – RobBlankson

0

就像阿克頓說的那樣,檢查你的AD之間的信任關係。

此外,請檢查您的運行環境。當我不得不通過C#接觸AD時,我遇到了這樣的問題:如果用戶沒有權限對另一個AD進行這種修改,它將會失敗。

最後一點,組名和路徑。你的組名是否包含域名(sSecurityGroup)?也許你的目錄路徑有路徑問題(sDirectory)?

+0

因爲我試圖使用模擬,那麼我會想用戶肯定有權限,因爲我冒充用戶使用RDP到域B中的計算機,並從那裏運行應用程序 - 哪些工作沒有錯誤。我沒有把域名放在組名中,所以會嘗試。目錄路徑似乎是好的,當我通過代碼時,但我會嘗試一個完全合格的目錄路徑。謝謝 – RobBlankson