using Debug; using Microsoft.VisualBasic; using Microsoft.Win32; using System.Runtime.InteropServices; /// /// 模组搜索引擎操作 /// public class Mod { private static DateTime StartTime; /// /// 结束时间 /// private static void EndTime() { Console.WriteLine("结束" + (DateTime.Now - StartTime).TotalMilliseconds + "ms"); } private readonly bool Isdot = true; private readonly List ExcludeFile = [ "Android", "androidword", "Java", "Linux", "linuxword", "Mac", "Windows", "Windows 10", "Steam", "Genshin Impact Game", "Godot", "Gradle", "WeGame", "Mental Omega", "WeGameApps", "ramboplayGame", "QQ", "QQWORD","Microsoft SDKs","Creator","editors","AndroidSDK","SDK","Pr","PR","PS","Ps","WE", "androidstudioword","xshell7" ]; public string FileDir = string.Empty; public Mod() { Console.Clear(); ModeSwitch.New("搜索模式", ["返回主页", "默认", "steam", "全盘"], MODE); //Action action = MODE; } public void MODE(int a) { Console.Clear(); if (a == 0) { _ = new Program(); return; } // StartTime = DateTime.Now; if (a == 1 || a == 2) { steam();//先看看steam中有没有安装铁锈战争 //steam中没有安装铁锈战争扫全盘 } if ((a == 1 || a == 3) && FileDir == string.Empty) { init(); } Console.Clear(); if (!string.IsNullOrEmpty(FileDir)) { ModeSwitch.New("找到了:" + FileDir, ["返回主页", "默认", "steam", "全盘"], MODE); } else { ModeSwitch.New("未找到", ["返回主页", "默认", "steam", "全盘"], MODE); } //FileDir=string.Empty; } private void steam() { var steamPath = GetSteamInstallPath(); if (!string.IsNullOrEmpty(steamPath)) { string v = Path.Combine(steamPath, "steamapps\\common\\Rusted Warfare"); // Program.printfLine("找到了:" + v); if (Directory.Exists(v)) { FileDir = v; // EndTime(); } } } private void init() { var allDrives = DriveInfo.GetDrives(); foreach (var d in allDrives) { Console.WriteLine(); if (d.IsReady == true) { var name = d.Name; if (ExcludeFile.Contains(name)) { continue; } if (name.Equals("C:\\")) { FileSearch(name); } else { if (Directory.Exists(name + "/Rusted Warfare")) { EndTime(); break; } else { FileSearch(name); } } } } } public bool IsSearch = true; private void FileSearch(string path) { try { foreach (var file in Directory.EnumerateDirectories(path)) { if (!IsSearch) { return; } var name = Path.GetFileName(file); if (Isdot && name.StartsWith(".")) { continue; } if (ExcludeFile.Contains(name)) { continue; } if (name.Equals("Rusted Warfare")) { FileDir = file; EndTime(); break; } else { FileSearch(file); } } } catch (UnauthorizedAccessException) { Console.WriteLine($"Access denied for: {path}"); } catch (Exception ex) { Console.WriteLine($"Error accessing directory '{path}': {ex.Message}"); } } private static string GetSteamInstallPath() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return string.Empty; // Windows 相关逻辑 } var installPath = GetInstallPathFromKey(@"Software\Valve\Steam"); if (string.IsNullOrEmpty(installPath)) { installPath = GetInstallPathFromKey(@"SOFTWARE\Wow6432Node\Valve\Steam"); } return installPath; string GetInstallPathFromKey(string subKey) { using (var key = Registry.CurrentUser.OpenSubKey(subKey)) { if (key != null) { var path = key.GetValue("InstallPath"); if (path != null) { return (string)path; } } } using (var key = Registry.LocalMachine.OpenSubKey(subKey)) { if (key != null) { var path = key.GetValue("InstallPath"); if (path != null) { return (string)path; } } } return string.Empty; } } }