PDA

View Full Version : تعیین یوزر برای پوشه در قسمتsharing ,security



rahimi.mohamad24
جمعه 13 مرداد 1391, 10:01 صبح
سلام
من یه کاربر جدید همراه با یوزر و پسورد در Local Users and group ساختم.مشکلم اینجاست که قراره برای هر فولدر خاصی که جدید ساخته می شود ، فقط به user خاصی دسترسی Read داده شود.
قبلا این کار توسط ادمین و به صورت دستی انجام میشد.یعنی ابتدا یه کاربر ساخته می شد و بعد ادمین برای پوشه ی جدیدی که درست می کرد ،چون کل این فولدر ها در یک فولدر shared بودند و هر کاربر فقط باید پوشه ی مربوط به خودش را ببیند،بعد از اینکه روی پوشه properties میگرفت، در تب Sharing , security ، این یوزر را اضافه می کرد و بهش دسترسی می داد.
حالا قراره تمام این کارها توسط برنامه انجام بشه.
آیا امکان اضافه کردن یوزر به پوشه وجود دارد؟

S.Reza
جمعه 13 مرداد 1391, 15:49 عصر
سلام
من یه کاربر جدید همراه با یوزر و پسورد در Local Users and group ساختم.مشکلم اینجاست که قراره برای هر فولدر خاصی که جدید ساخته می شود ، فقط به user خاصی دسترسی Read داده شود.
قبلا این کار توسط ادمین و به صورت دستی انجام میشد.یعنی ابتدا یه کاربر ساخته می شد و بعد ادمین برای پوشه ی جدیدی که درست می کرد ،چون کل این فولدر ها در یک فولدر shared بودند و هر کاربر فقط باید پوشه ی مربوط به خودش را ببیند،بعد از اینکه روی پوشه properties میگرفت، در تب Sharing , security ، این یوزر را اضافه می کرد و بهش دسترسی می داد.
حالا قراره تمام این کارها توسط برنامه انجام بشه.
آیا امکان اضافه کردن یوزر به پوشه وجود دارد؟
درست متوجه شدم شما میخواهید به یک پوشه Permission بدید

ابتدا باید یوزرهای موجود در سیستم رو بدست بیاورید

public void GetUsers()
{
SelectQuery Query_GetUsers = new SelectQuery("Win32_UserAccount", "Domain='"
+ System.Environment.UserDomainName.ToString() + "'");
ManagementObjectSearcher Search = new ManagementObjectSearcher(Query_GetUsers);
foreach (ManagementObject management in Search.Get())
{
comboBox1.Items.Add(management["Name"]);
}
}

سپس با فولدر بروزر پوشه ای که قرار است به ان سطح دسترسی داده شود رو انتخاب کنید

private void button8_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() != DialogResult.Cancel)
textBox5.Text = folderBrowserDialog1.SelectedPath;
}

در انتها هم باید مشخص کنید که چه سطح دسترسی قرار است به پوشه داده شود به عنوان مثال من FullControl رو به صورت Deny در نظر گرفته ام

private void button7_Click(object sender, EventArgs e)
{
DirectoryInfo directoryinfo = new DirectoryInfo(textBox5.Text);
DirectorySecurity directsecurity = directoryinfo.GetAccessControl();
string User = System.Environment.UserDomainName + "\\" + comboBox1.SelectedItem.ToString();
directsecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl
, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Deny));
directoryinfo.SetAccessControl(directsecurity);
}