public ProcessWatcher(string ConfigPath) { this.ConfigPath = ConfigPath; this.firstLevelProcessHashes = new IndexedList(); this.secondLevelProcessHashes = ConfigLoader.LoadSecondHashConfig(ConfigPath); this.processExeNames = new Dictionary <string, App>(); StartWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); StartWatch.EventArrived += new EventArrivedEventHandler(startWatch_ProcessCreated); StartWatch.Start(); }
public static IndexedList LoadSecondHashConfig(string path) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (!File.Exists($"{path}\\second.json")) { IndexedList create = new IndexedList(); SaveSecondHashConfig(path, create); return(create); } return(JsonConvert.DeserializeObject <IndexedList>(File.ReadAllText($"{path}\\second.json"))); }
public StartMenuHandler(string ConfigPath, string[] StartMenuPathes) : base(ConfigPath) { IndexedList firstSaved = ConfigLoader.LoadFirstHashConfig(ConfigPath); //Scan Menu Folder foreach (string menu_path in StartMenuPathes) { foreach (string symlink_path in Directory.GetFiles(menu_path, "*.lnk", SearchOption.AllDirectories)) { string name = Path.GetFileNameWithoutExtension(symlink_path).ToLower(); var link = Symlink.GetRealPath(symlink_path); if (Path.GetExtension(link.TargetPath) != ".exe") { continue; } App output = firstSaved.TryToGetApp(name); if (output != null) { firstLevelProcessHashes.TryToAdd(name, link.TargetPath, output.lastStart, ref output, link.Arguments); } else { firstLevelProcessHashes.TryToAdd(name, link.TargetPath, ref output, link.Arguments); } if (!processExeNames.ContainsKey(link.TargetPath)) { processExeNames.Add(link.TargetPath, output); } } } //Start watching StartUp folder foreach (string menu_path in StartMenuPathes) { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = menu_path; watcher.IncludeSubdirectories = true; watcher.Filter = "*.lnk"; watcher.Created += new FileSystemEventHandler(OnCreated); watcher.Deleted += new FileSystemEventHandler(OnDeleted); watcher.Renamed += new RenamedEventHandler(OnRenamed); watcher.EnableRaisingEvents = true; watchers.Add(watcher); } }
public static void SaveSecondHashConfig(string path, IndexedList config) { File.WriteAllText($"{path}\\second.json", JsonConvert.SerializeObject(config)); }