现在的位置: 首页 > 综合 > 正文

设置Windows系统NTFS某个目录的用户访问权限(c#)

2013年02月23日 ⁄ 综合 ⁄ 共 5610字 ⁄ 字号 评论关闭

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Management;

using System.Text;

using System.Runtime.InteropServices;

namespace SetAcl

{

     /// <summary>

     /// Form1 的摘要说明。

     /// </summary>

     public class Form1 : System.Windows.Forms.Form

     {

         private System.Windows.Forms.TextBox textBox1;

         private System.Windows.Forms.TextBox textBox2;

         private System.Windows.Forms.Button SetAcl;

         private System.Windows.Forms.Label label1;

         private System.Windows.Forms.Label label2;

         private System.Windows.Forms.Button button1;

         /// <summary>

         /// 必需的设计器变量。

         /// </summary>

         private System.ComponentModel.Container components = null;

 

         public Form1()

         {

              //

              // Windows 窗体设计器支持所必需的

              //

              InitializeComponent();

 

              //

              // TODO: 在 InitializeComponent 调用后添加任何构造函数代码

              //

         }

 

         /// <summary>

         /// 清理所有正在使用的资源。

         /// </summary>

         protected override void Dispose( bool disposing )

         {

              if( disposing )

              {

                   if (components != null)

                   {

                       components.Dispose();

                   }

              }

              base.Dispose( disposing );

         }

 

         #region Windows Form Designer generated code

         /// <summary>

         /// 设计器支持所需的方法 - 不要使用代码编辑器修改

         /// 此方法的内容。

         /// </summary>

         private void InitializeComponent()

         {

              this.textBox1 = new System.Windows.Forms.TextBox();

              this.textBox2 = new System.Windows.Forms.TextBox();

              this.SetAcl = new System.Windows.Forms.Button();

              this.label1 = new System.Windows.Forms.Label();

              this.label2 = new System.Windows.Forms.Label();

              this.button1 = new System.Windows.Forms.Button();

              this.SuspendLayout();

              //

              // textBox1

              //

              this.textBox1.Location = new System.Drawing.Point(80, 32);

              this.textBox1.Name = "textBox1";

              this.textBox1.Size = new System.Drawing.Size(152, 21);

              this.textBox1.TabIndex = 0;

              this.textBox1.Text = "c://test";

              //

              // textBox2

              //

              this.textBox2.Location = new System.Drawing.Point(80, 80);

              this.textBox2.Name = "textBox2";

              this.textBox2.Size = new System.Drawing.Size(152, 21);

              this.textBox2.TabIndex = 1;

              this.textBox2.Text = "ASPNET";

              //

              // SetAcl

              //

              this.SetAcl.Location = new System.Drawing.Point(152, 136);

              this.SetAcl.Name = "SetAcl";

              this.SetAcl.TabIndex = 2;

              this.SetAcl.Text = "设置";

              this.SetAcl.Click += new System.EventHandler(this.SetAcl_Click);

              //

              // label1

              //

              this.label1.Location = new System.Drawing.Point(24, 80);

              this.label1.Name = "label1";

              this.label1.Size = new System.Drawing.Size(48, 23);

              this.label1.TabIndex = 5;

              this.label1.Text = "用户:";

              //

              // label2

              //

              this.label2.Location = new System.Drawing.Point(24, 32);

              this.label2.Name = "label2";

              this.label2.Size = new System.Drawing.Size(48, 23);

              this.label2.TabIndex = 6;

              this.label2.Text = "目录:";

              //

              // button1

              //

              this.button1.Location = new System.Drawing.Point(8, 168);

              this.button1.Name = "button1";

              this.button1.TabIndex = 7;

              this.button1.Text = "button1";

              this.button1.Click += new System.EventHandler(this.button1_Click);

              //

              // Form1

              //

              this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

              this.ClientSize = new System.Drawing.Size(280, 197);

              this.Controls.Add(this.button1);

              this.Controls.Add(this.label2);

              this.Controls.Add(this.label1);

              this.Controls.Add(this.SetAcl);

              this.Controls.Add(this.textBox2);

              this.Controls.Add(this.textBox1);

              this.MaximizeBox = false;

              this.MinimizeBox = false;

              this.Name = "Form1";

              this.Text = "Form1";

              this.ResumeLayout(false);

 

         }

         #endregion

 

         /// <summary>

         /// 应用程序的主入口点。

         /// </summary>

         [STAThread]

         static void Main()

         {

              Application.Run(new Form1());

         }

         [DllImport("advapi32.dll")]

         public static extern bool LookupAccountName(string lpSystemName, string lpAccountName,byte[] sid,ref int cbSid, StringBuilder ReferencedDomainName, ref int cbReferencedDomainName,ref int peUse);

        

         private void SetAcl_Click(object sender, System.EventArgs e)

         {

              string filePath=this.textBox1.Text;

              string userName=this.textBox2.Text;

              if(GetFileSystem(filePath.Substring(0,1))!="NTFS")

                   return;

              if(FindTrustee(filePath,userName))

                   return;

              SetDACL(filePath,userName);

         }

         private string GetFileSystem(string diskName)

         {

              string fileSystem="";

              System.Management.ManagementObjectSearcher diskClass=new ManagementObjectSearcher("select filesystem from Win32_LogicalDisk where name='"+diskName+":'");

              ManagementObjectCollection disks=diskClass.Get();

              foreach(ManagementObject disk in disks)

              {

                   PropertyDataCollection diskProperties=disk.Properties;

                   foreach (PropertyData diskProperty in diskProperties) <

抱歉!评论已关闭.