zoukankan      html  css  js  c++  java
  • C# Windows帐户和目录添加用户权限方法

    /// <summary>
    003 /// 目录权限
    004 /// </summary>
    005 public enum FloderRights
    006 {
    007     FullControl,
    008     Read,
    009     Write
    010 }
    011  
    012     /// <summary>
    013     /// 创建Windows帐户
    014     /// </summary>
    015     /// <param name="pathname"></param>
    016     /// <returns></returns>
    017     public static void CreateLocalUser(string username, string password, string description)
    018     {
    019         DirectoryEntry dirEntry = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
    020         var NewUser = dirEntry.Children.Add(username, "user");
    021         NewUser.Invoke("SetPassword", new object[] { password });
    022         NewUser.Invoke("Put", new object[] { "Description", description });
    023         NewUser.CommitChanges();
    024     }
    025  
    026  
    027     /// <summary>
    028     /// 更改Windows帐户密码
    029     /// </summary>
    030     /// <param name="username"></param>
    031     /// <param name="oldPwd"></param>
    032     /// <param name="newPwd"></param>
    033     public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd)
    034     {
    035         DirectoryEntry dirEntry = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
    036         DirectoryEntry userEntry = dirEntry.Children.Find(username, "user");
    037         object[] password = new object[] { newPwd, oldPwd };
    038         object ret = userEntry.Invoke("ChangePassword", password);
    039         userEntry.CommitChanges();
    040     }
    041  
    042     /// <summary>
    043     /// 给目录添加用户和权限
    044     /// </summary>
    045     /// <param name="pathname"></param>
    046     /// <param name="username"></param>
    047     /// <param name="qx"></param>
    048     public static void AddPathRights(string pathname, string username, FloderRights qx)
    049     {
    050         DirectoryInfo dirinfo = new DirectoryInfo(pathname);
    051         if ((dirinfo.Attributes & FileAttributes.ReadOnly) != 0)
    052         {
    053             dirinfo.Attributes = FileAttributes.Normal;
    054         }
    055         //取得访问控制列表
    056         DirectorySecurity dirsecurity = dirinfo.GetAccessControl();
    057         // string strDomain = Dns.GetHostName();
    058         switch (qx)
    059         {
    060             case FloderRights.FullControl:
    061                 dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, AccessControlType.Allow));
    062                 break;
    063             case FloderRights.Read:
    064                 dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, AccessControlType.Allow));
    065                 break;
    066             case FloderRights.Write:
    067                 dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, AccessControlType.Allow));
    068                 break;
    069             default:
    070                 dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, AccessControlType.Deny));
    071                 break;
    072         }
    073  
    074         dirinfo.SetAccessControl(dirsecurity);
    075  
    076         //取消目录从父继承
    077         DirectorySecurity dirSecurity = System.IO.Directory.GetAccessControl(pathname);
    078         dirSecurity.SetAccessRuleProtection(true, false);
    079         System.IO.Directory.SetAccessControl(pathname, dirSecurity);
    080  
    081         //AccessControlType.Allow允许访问受保护对象//Deny拒绝访问受保护对象
    082         //FullControl、Read 和 Write 完全控制,读,写
    083         //FileSystemRights.Write写入//Delete删除 //DeleteSubdirectoriesAndFiles删除文件夹和文件//ListDirectory读取
    084         //Modify读写删除-修改//只读打开文件和复制//
    085     }
    086  
    087     /// <summary>
    088     /// 判断Windows用户是否存在
    089     /// </summary>
    090     /// <param name="username"></param>
    091     /// <returns></returns>
    092     public static bool ExistWinUser(string username)
    093     {
    094         try
    095         {
    096             using (DirectoryEntry dirEntry = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
    097             {
    098                 //删除存在用户
    099                 var delUser = dirEntry.Children.Find(username, "user");
    100                 return delUser != null;
    101             }
    102         }
    103         catch
    104         {
    105             return false;
    106         }
    107     }
    108  
    109     /// <summary>
    110     /// 删除Windows用户
    111     /// </summary>
    112     /// <param name="username"></param>
    113     /// <returns></returns>
    114     public static bool DeleteWinUser(string username)
    115     {
    116         try
    117         {
    118             using (DirectoryEntry dirEntry = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
    119             {
    120                 //删除存在用户
    121                 var delUser = dirEntry.Children.Find(username, "user");
    122                 if (delUser != null)
    123                 {
    124                     dirEntry.Children.Remove(delUser);
    125                 }
    126             }
    127             return true;
    128         }
    129         catch
    130         {
    131             return false;
    132         }
    133     }
  • 相关阅读:
    POJ 1703 Find them, Catch them
    POJ 2236 Wireless Network
    POJ 2010 Moo University
    POJ 2184 Cow Exhibition
    POJ 3280 Cheapest Palindrome
    POJ 3009 Curling 2.0
    POJ 3669 Meteor Shower
    POJ 2718 Smallest Difference
    POJ 3187 Backward Digit Sums
    POJ 3050 Hopscotch
  • 原文地址:https://www.cnblogs.com/luluping/p/1809889.html
Copyright © 2011-2022 走看看