public override void Initialize() { if (Environment.OSVersion.Platform != PlatformID.Win32NT) { WriteLine("Other OS detected; do not use this plugin.", ConsoleColor.DarkCyan); return; } var name = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem") .Get() .Cast <ManagementObject>() .Select(x => x.GetPropertyValue("Caption")) .FirstOrDefault()? .ToString() ?? "Unknown"; string versionString; if (!name.StartsWith("Microsoft Windows") || string.IsNullOrWhiteSpace(versionString = name.Split(' ').FirstOrDefault(x => x.All(char.IsDigit)))) { WriteLine("Couldn't detect version; the version string is: " + name, ConsoleColor.Red); return; } var windowsServer = name.Contains("Server"); var version = int.Parse(versionString); if (version < 2008 && windowsServer || (version < 7 || version == 10) && !windowsServer) { WriteLine("Terraria Server on your Windows version doesn't need be fixed.", ConsoleColor.DarkCyan); return; } try { Console.OutputEncoding = Encoding.Default; WriteLine("Fixed console output successfully! OSVersion: " + name, ConsoleColor.Cyan); } catch { // ignored } }
private void MemmoryCart(object sender, System.EventArgs e) { List <string> usbDrivesLetters = new ManagementObjectSearcher("select * from Win32_DiskDrive WHERE InterfaceType='USB'").Get().Cast <ManagementObject>() .SelectMany(drive => drive.GetRelated("Win32_DiskPartition").Cast <ManagementObject>()) .SelectMany(o => o.GetRelated("Win32_LogicalDisk").Cast <ManagementObject>()) .Select(i => Convert.ToString(i["Name"]) + "\\").ToList(); List <string> cardDrivesLetters = new ManagementObjectSearcher("select * from Win32_DiskDrive").Get().Cast <ManagementObject>() .SelectMany(drive => drive.GetRelated("Win32_DiskPartition").Cast <ManagementObject>()) .SelectMany(o => o.GetRelated("Win32_LogicalDisk").Cast <ManagementObject>()) .Select(i => Convert.ToString(i["Name"]) + "\\").ToList(); foreach (var c in usbDrivesLetters) { cardDrivesLetters.Remove(c); } _cardDriveInfos = DriveInfo.GetDrives().Where(drive => drive.DriveType == DriveType.Removable && cardDrivesLetters.Contains(drive.RootDirectory.Name)).ToList(); OnInsertCard(); }