using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.DirectoryServices;
using System.Collections;
using System.Diagnostics;
using System.Management;
namespace GrantUserWritableFile
...{
public class GrantUser
...{
private string directoryInstr = "";
private string directoryPrtfl = "";
private string hostName = "";
public string DomainName = "localhost";
private string userName = "";
private string syspath = "";
private string DriverName = "";
public static void Main(string[] args)
...{
GrantUser gu = new GrantUser();
gu.getInfo();
Console.WriteLine("Grant folder to user complited!");
}
public void getInfo()
...{
DirectoryEntry de = new DirectoryEntry("IIS://Localhost/W3SVC/1/ROOT/RPA");
this.directoryInstr = (string)de.Properties["Path"].Value + "/InstrumentInfo/ChartImages";
this.directoryPrtfl = (string)de.Properties["Path"].Value + "/PortfolioView/ChartImages";
//this.directoryInstr = "C:/1";
DriverName = de.Properties["Path"].Value.ToString().Substring(0, 2);
this.hostName = Dns.GetHostName().ToString();
this.userName = "IUSR_" + hostName;
this.syspath = Environment.SystemDirectory + "/";
ManagementObjectSearcher DiskSearch = new ManagementObjectSearcher(new SelectQuery("Select * from Win32_LogicalDisk"));
ManagementObjectCollection moDiskCollection = DiskSearch.Get();
foreach (ManagementObject mo in moDiskCollection)
...{
if ((mo.SystemProperties["FileSystem"].Value.ToString().ToUpper() == "NTFS") && (DriverName == mo.SystemProperties["name"].Value.ToString()))
...{
this.SetFolder(directoryInstr, userName);
this.SetFolder(directoryPrtfl, userName);
}
}
}
public void SetFolder(string PathName,string userName)
...{
//if (Directory.Exists(PathName) == true)
//{
// Directory.Delete(PathName, true);
//}
//Directory.CreateDirectory(PathName);
Process process = new Process();
process.StartInfo.FileName = syspath + "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = false;
process.Start();
process.StandardInput.WriteLine(String.Format("cacls {0} /t /e /g {1}:f", PathName, userName));
process.StandardInput.WriteLine("exit");
process.WaitForExit();
process.Close();
}
}
}
本文介绍了一种使用C#编程语言来实现为特定用户授予指定文件夹读写权限的方法。通过调用系统命令和利用WMI(Windows Management Instrumentation)进行磁盘驱动器筛选,确保仅当目标驱动器为NTFS格式时才执行权限设置。
146

被折叠的 条评论
为什么被折叠?



