2009-11-23 63 views
0

我正在VS2008中执行部署项目,并且在安装流程结束时,我需要为本地计算机上的每个人都创建一个具有完全控制权限的共享文件夹域。 我成功创建了共享文件夹,但每个人都有读取权限。 任何帮助如何做到这一点,将不胜感激。使用C#创建可从域访问的共享文件夹

谢谢 瓦列

回答

0

我假设你正在使用的ManagementClasscreate a shared folder

设置你的ManagementBaseObject应充分控制每个人的访问场:

ManagementClass mc = new ManagementClass("win32_share"); 
ManagementBaseObject inParams = mc.GetMethodParameters("Create"); 
inParams["Description"] = "Shared Folder"; 
// ... whathever ... 
inParams["Access"] = null; // <-- should give full control access to everyone 

如果以上不工作,你可能会想尝试像明确以下与SMT设置的安全级别:

public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType) 
    { 
     DirectoryInfo dInfo = new DirectoryInfo(FileName); 

     DirectorySecurity dSecurity = dInfo.GetAccessControl(); 

     // Add the FileSystemAccessRule to the security settings. 
     dSecurity.AddAccessRule(new FileSystemAccessRule(Account, 
                 Rights, 
                 ControlType)); 
     // Set the new access settings. 
     dInfo.SetAccessControl(dSecurity); 
    } 

如果以上都没有帮助,那么我建议你发布你的代码。

+0

代码没什么特别的。安装程序只是在本地机器上创建一个目录并尝试共享它。我也试过你的代码,但仍然无法使用。 The ManagementClass mc = new ManagementClass(“win32_share”); 代码的确可以通过域共享目录,但只能通过对每个人的“读取”访问。 AddDirectorySecurity 方法什么也不做。 – Valeriu 2009-11-24 07:52:03

+0

这是因为安装程序是否与系统用户一起运行,并且没有足够的权限? – Valeriu 2009-11-24 07:53:42

+1

我也认为inParams [“Access”] = null;可以访问Everyone,但是只读 – Valeriu 2009-11-24 08:05:43

相关问题