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;
}
}
}