c#设置sqlserver用户sa为10位数随机密码并输出文本

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Text.RegularExpressions;
using System.IO;
using CpmBigDataImportService;
using System.Net;
using System.Net.Sockets;
using System.Xml;

namespace MSSQLTools
{
    public class MyTools
    {

        /// <summary>
        /// 修改配置文件
        /// </summary>
        /// <param name="pwd"></param>
        public static void ChangeConfigPwd(string pwd)
        {
            string filename = @"D:\abc\abc\abc.xml";
            XmlDocument doc = new XmlDocument();
            doc.Load(filename);

            string path = "//db[@driver='SQLOLEDB.1'][@desc]";
            XmlNodeList list = doc.SelectNodes(path);
            foreach (var item in list)
            {
                XmlElement ele = item as XmlElement;
                if (null == ele)
                    break;
                ele.SetAttribute("pwd", pwd);
            }
            doc.Save(filename);
        }

        /// <summary>
        /// 修改sa密码
        /// </summary>
        /// <param name="pwd"></param>
        /// <param name="msg"></param>
        public static void ChangeSaPwd(string pwd, out string msg)
        {
            msg = "";
            string conStr = string.Format("server={0};database={1};Integrated Security=SSPI"
                , "127.0.0.1,1433\\sqlexpress"
                , "master");

            try
            {
                string sql = string.Format("EXEC sys.sp_password null, '{0}', 'sa'", pwd);
                MyCommon.ExecuteSql(sql, conStr);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
        }


        /// <summary>
        /// 获取本机
        /// </summary>
        /// <returns></returns>
        public static string GetLocalIp()
        {
            try
            {
                string hostName = Dns.GetHostName();
                IPHostEntry ipEntry = Dns.GetHostEntry(hostName);
                foreach (var item in ipEntry.AddressList)
                {
                    if (item.AddressFamily == AddressFamily.InterNetwork)
                        return hostName + "/" + item.ToString();
                }
            }
            catch (Exception ex)
            {
                throw;
            }

            return "";
        }

        /// <summary>
        /// 写入信息
        /// </summary>
        /// <param name="filename"></param>
        public static void WriteInfo(string filename)
        {
            string dir = null;
            if (string.IsNullOrEmpty(filename) || !File.Exists(filename))
            {
                dir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                filename = "info.txt";
            }
            else
            {
                int index = filename.LastIndexOf("\\");
                dir = filename.Substring(0, index);
                filename = filename.Substring(index + 1, filename.Length - index - 1);

            }
            string pwd = GetPassword(10);
            string msg = GetLocalIp() + "/" + pwd;
            string m;
            ChangeSaPwd(pwd, out m);
            if (!string.IsNullOrEmpty(m))
                msg += Environment.NewLine + m;
            else
                ChangeConfigPwd(pwd);
            MyCommon.WriteToFile(msg, filename, 0, dir);
            MyCommon.ExecuteProcess("explorer.exe", dir);
        }


        /// <summary>
        /// 获取含有字母及数字的随机密码
        /// </summary>
        /// <param name="length"></param>
        /// <returns></returns>
        public static string GetPassword(int length)
        {
            string code = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            Random rand = new Random();
            char[] result = new char[length];
            string r = null;
            Regex digit = new Regex("\\d");
            Regex letter = new Regex("[a-zA-Z]");
            do
            {
                for (int i = 0; i < length; i++)
                    result[i] = code[rand.Next(0, code.Length)];
                r = new String(result);
            } while (!(digit.IsMatch(r) && letter.IsMatch(r)));

            return r;
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值