using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Windows.Forms; namespace ryCommon { /// /// 文件信息 /// public class RySoft { /// /// 获取版本号 /// public static string VersionStr { get { //Version ver = Assembly.LoadFile(Application.ExecutablePath).GetName().Version; //Version ver = Assembly.GetEntryAssembly().GetName().Version; //return ver.Major.ToString() + "." + ver.Minor.ToString() + "." + ver.Build.ToString() + "." + ver.; return GetVersionStr(Application.ExecutablePath); } } /// /// 获取版本号 /// /// /// public static string GetVersionStr(string exe_path) { try { System.Diagnostics.FileVersionInfo info = System.Diagnostics.FileVersionInfo.GetVersionInfo(exe_path); return info.ProductVersion; } catch { return ""; } //Version ver = Assembly.LoadFile(exe_path).GetName().Version; //return ver.Major.ToString() + "." + ver.Minor.ToString() + "." + ver.Build.ToString() + "." + ver.Revision.ToString(); } /// /// 根据版本字符串输出double类型的版本号 /// /// /// /// public static void GetVerByVerStr(string ver, out double _softVer, out double _reVer) { _softVer = 0; _reVer = 0; string[] ver_item = ver.Split('.'); switch (ver_item.Length) { case 1: _softVer = ver_item[0].ToDouble(0); break; case 2: _softVer = ver.ToDouble(0); break; case 3: _softVer = (ver_item[0] + "." + ver_item[1]).ToDouble(0); _reVer = ver_item[2].ToDouble(0); break; case 4: _softVer = (ver_item[0] + "." + ver_item[1]).ToDouble(0); _reVer = (ver_item[2] + "." + ver_item[3]).ToDouble(0); break; } } /// /// 比较两个版本号大小 /// /// /// /// oldVer小于newVer,返回1,大于则返回-1,相等返回0,不支持则返回-1000 public static int CompareVer(string oldVer,string newVer) { if (oldVer == newVer) { return 0; } var _oldVer = oldVer; var _newVer = newVer; if (_oldVer.StartsWith("v", StringComparison.OrdinalIgnoreCase)) { _oldVer = _oldVer.Substring(1); } if (_newVer.StartsWith("v", StringComparison.OrdinalIgnoreCase)) { _newVer = _newVer.Substring(1); } var have_ts = false; if (!_oldVer.Replace(".", "").Replace("_", "").IsInt()) { _oldVer = GetVer(_oldVer); have_ts = true; if (_oldVer.Length == 0) { return -1000; } } if (!_newVer.Replace(".", "").Replace("_", "").IsInt()) { _newVer = GetVer(_newVer); have_ts = true; if (_newVer.Length == 0) { return -1000; } } var old_split = _oldVer.Split("._".ToCharArray()); var new_split = _newVer.Split("._".ToCharArray()); for (int i = 0; i < new_split.Length; i++) { var item_new = new_split[i].ToInt(); var item_old = 0; if (old_split.Length > i) { item_old = old_split[i].ToInt(); } if (item_new > item_old) { return 1; } if (item_new < item_old) { return -1; } } if (have_ts) { return -1000; } return 0; } /// /// 从字符串中提取版本号 /// /// /// public static string GetVer(string _VerStr) { var have_ver = false; var ResName = _VerStr.Replace("最新破解版", "").Replace("中文版", "").Replace("完美直装版", ""); var start = ResName.Length; while (start >= 1) { var word = ResName.Substring(start - 1, 1); if (word == "." || word.IsInt()) { have_ver = true; start--; } else { break; } } if (have_ver) { var ver = ResName.Substring(start); if (ver.IsInt()) { var ver2 = GetVer(ResName.Substring(0, start)); if (ver2.Length > 0) { return ver2; } } return ver; } else { start = ResName.Length; var end_index = -1; while (start >= 1) { var word = ResName.Substring(start - 1, 1); if (word == "." || word.IsInt()) { if (end_index == -1) { end_index = start - 1; } have_ver = true; } else { if (end_index != -1) { break; } } start--; } if (have_ver) { return ResName.Substring(start, end_index - start + 1); } return ""; } } /// /// 比较版本号 /// /// /// /// /// /// old小于new,返回1,大于则返回-1,相等返回0 public static int CompareVer(double _old_softVer,double _old_reVer, double _new_softVer, double _new_reVer) { if (_old_softVer < _new_softVer) { return 1; } if (_old_softVer == _new_softVer) { if (_old_reVer < _new_reVer) { return 1; } else if (_old_reVer == _new_reVer) { return 0; } else { return -1; } } else { return -1; } } /// /// 判断是否是管理员方式运行 /// /// public static bool IsAdministrator() { System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent(); System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity); return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator); } } }