zoukankan      html  css  js  c++  java
  • WMI远程添加修改用户

    /// <summary>
        /// WMI用户操作
        /// </summary>
        public class Win32_UserAccount
        {
            private string ip = string.Empty;
            public string IP
            {
                get { return ip; }
                set { ip = value; }
            }

            private string username = string.Empty;
            public string UserName
            {
                get { return username; }
                set { username = value; }
            }

            private string password;

            public string PassWord
            {
                get { return password; }
                set { password = value; }
            }

            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="_ip">目标IP地址</param>
            /// <param name="_username">管理员用户名</param>
            /// <param name="_password">密码</param>
            public Win32_UserAccount(string _ip, string _username, string _password)
            {
                IP = _ip;
                UserName = _username;
                PassWord = _password;
            } 

            /// <summary>
            /// 返回所有用户
            /// </summary>
            /// <returns>帐号数组</returns>
            public string[] ViweUsers()
            {
                try
                {
                    ConnectionOptions options = new ConnectionOptions();
                    options.Username = UserName;
                    options.Password = PassWord;

                    ManagementScope Conn = new ManagementScope(@"\\" + IP + @"\root\cimv2", options);
                    Conn.Connect();
                    //确定WMI操作的内容
                    ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_UserAccount");
                    ManagementObjectSearcher query1 = new ManagementObjectSearcher(Conn, oq);
                    //获取WMI操作内容
                    ManagementObjectCollection queryCollection1 = query1.Get();
                    //根据使用者选择,执行相应的远程操作
                    string[] s = new string[queryCollection1.Count];
                    int i=0;
                    foreach (ManagementObject mo in queryCollection1)
                    {
                        s[i] += mo.GetPropertyValue("Name");
                        i++;
                    }
                    return s;
                }
                //报错
                catch (Exception ee)
                {
                    throw ee;
                }
            }

            /// <summary>
            /// 修改帐号密码
            /// </summary>
            /// <param name="_ChangeUserName">要修改的帐号</param>
            /// <param name="_ChangePassWord">修改后的密码</param>
            /// <returns>是否成功</returns>
            public bool ChangePassWordByCmd(string _ChangeUserName,string _ChangePassWord)
            {
                try
                {

                    ConnectionOptions options = new ConnectionOptions();
                    options.Username = UserName;
                    options.Password = PassWord;

                    ManagementScope Conn = new ManagementScope(@"\\" + IP + @"\root\cimv2", options);
                    Conn.Connect();

                    ManagementPath path = new ManagementPath("Win32_Process");
                    ManagementClass processClass = new ManagementClass(Conn, path, null);

                    ManagementBaseObject inParams = processClass.GetMethodParameters("Create");

                    //Parameters for creation of process.
                    inParams["CommandLine"] = "net user " + _ChangeUserName + " "+_ChangePassWord+"";

                    //Invoke Method.
                    ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);

                    return true;
                }
                //报错
                catch (Exception ee)
                {
                    return false;
                }
            }

            /// <summary>
            /// 添加用户
            /// </summary>
            /// <param name="_NewUserName">用户名</param>
            /// <param name="_NewPassWord">密码</param>
            /// <returns>是否成功</returns>
            public bool AddUserByCmd(string _NewUserName,string _NewPassWord)
            {
                try
                {

                    ConnectionOptions options = new ConnectionOptions();
                    options.Username = UserName;
                    options.Password = PassWord;

                    ManagementScope Conn = new ManagementScope(@"\\" + IP + @"\root\cimv2", options);
                    Conn.Connect();

                    ManagementPath path = new ManagementPath("Win32_Process");
                    ManagementClass processClass = new ManagementClass(Conn, path, null);

                    ManagementBaseObject inParams1 = processClass.GetMethodParameters("Create");

                    //Parameters for creation of process.
                    inParams1["CommandLine"] = "net user "+_NewUserName+" "+_NewPassWord+" /add";


                    //Invoke Method.
                    ManagementBaseObject outParams1 = processClass.InvokeMethod("Create", inParams1, null);
                    ManagementBaseObject inParams2 = processClass.GetMethodParameters("Create");
                    inParams2["CommandLine"] = "net localgroup administrators " + _NewUserName + " /add ";
                    ManagementBaseObject outParams2 = processClass.InvokeMethod("Create", inParams2, null);
                    return true;
                }
                //报错
                catch
                {
                    return false;
                }
            }

            /// <summary>
            /// 删除用户
            /// </summary>
            /// <param name="_DelUserName">要删除的用户名</param>
            /// <returns>是否成功</returns>
            public bool DelUserByCmd(string _DelUserName)
            {
                try
                {
                    ConnectionOptions options = new ConnectionOptions();
                    options.Username = UserName;
                    options.Password = PassWord;

                    ManagementScope Conn = new ManagementScope(@"\\" + IP + @"\root\cimv2", options);
                    Conn.Connect();

                    ManagementPath path = new ManagementPath("Win32_Process");
                    ManagementClass processClass = new ManagementClass(Conn, path, null);

                    ManagementBaseObject inParams = processClass.GetMethodParameters("Create");

                    inParams["CommandLine"] = "net user " + _DelUserName + " /delete";

                    ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);

                    return true;
                }
                catch
                {
                    return false;
                }
            }
        }

  • 相关阅读:
    matplotlib基础汇总_03
    matplotlib基础汇总_02
    matplotlib基础汇总_01
    水果系统(面向过程,面向对象)
    给定几位数,查看数根(使用函数实现)
    定义函数,给定一个列表作为函数参数,将列表中的非数字字符去除
    学生管理系统-明日学院的
    四平方和
    四位玫瑰数
    学生成绩表数据包括:学号,姓名,高数,英语和计算机三门课成绩,计算每个学生总分,每课程平均分,最高分和最低分
  • 原文地址:https://www.cnblogs.com/yinhaosln/p/1105625.html
Copyright © 2011-2022 走看看