簡體   English   中英

C#代碼,用於設置遠程共享以從其父目錄繼承權限

[英]C# code to set a remote share to inherit permissions from its parent directory

我在Windows域中有兩台計算機,稱為客戶端和服務器。 服務器有一個共享目錄,可以從客戶端計算機訪問。 我想在客戶端上運行C#應用程序,該應用程序設置此共享的權限以繼承服務器上共享的父目錄的權限。 我該怎么做呢?

我已嘗試過以下幾行代碼,但我認為它沒有正確的效果:

DirectoryInfo shareDirectoryInfo = new DirectoryInfo("\\server\share");
DirectorySecurity directorySecurity = shareDirectoryInfo.GetAccessControl();
directorySecurity.SetAccessRuleProtection(false, false);
InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
FileSystemAccessRule accessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, iFlags, PropagationFlags.InheritOnly, AccessControlType.Allow);
bool modified;
directorySecurity.ModifyAccessRule(AccessControlModification.Set, accessRule, out modified);
if (modified)
{
    Directory.SetAccessControl(name, directorySecurity);
}

我想我不明白為什么我必須為目錄創建一個FileSystemAccessRule - 我怎么能說從父進行繼承呢?

謝謝你的幫助! 馬丁

您可以使用SetAccessRuleProtection將文件夾設置為從父級繼承

DirectoryInfo targetFolder = new DirectoryInfo(@"\\server\share");
DirectorySecurity folderSecurity = targetFolder.GetAccessControl();   // Existing security
folderSecurity.SetAccessRuleProtection(false, true);                // This sets the folder to inherit
targetFolder.SetAccessControl(folderSecurity);

編輯:msdn文檔解釋如果將false作為第一個參數發送,則忽略第二個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM