improve:启动速度
This commit is contained in:
+36
-3
@@ -231,6 +231,7 @@ namespace Ink_Canvas
|
|||||||
// 动态加载WMI监控
|
// 动态加载WMI监控
|
||||||
private void TrySetupWmiMonitoring()
|
private void TrySetupWmiMonitoring()
|
||||||
{
|
{
|
||||||
|
object watcher = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 检查System.Management程序集是否可用
|
// 检查System.Management程序集是否可用
|
||||||
@@ -254,7 +255,7 @@ namespace Ink_Canvas
|
|||||||
string queryString = $"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.ProcessId = {currentProcessId}";
|
string queryString = $"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.ProcessId = {currentProcessId}";
|
||||||
|
|
||||||
// 创建ManagementEventWatcher实例
|
// 创建ManagementEventWatcher实例
|
||||||
object watcher = Activator.CreateInstance(watcherType, queryString);
|
watcher = Activator.CreateInstance(watcherType, queryString);
|
||||||
|
|
||||||
// 获取EventArrived事件信息
|
// 获取EventArrived事件信息
|
||||||
var eventInfo = watcherType.GetEvent("EventArrived");
|
var eventInfo = watcherType.GetEvent("EventArrived");
|
||||||
@@ -271,13 +272,45 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
// 启动监听
|
// 启动监听
|
||||||
var startMethod = watcherType.GetMethod("Start");
|
var startMethod = watcherType.GetMethod("Start");
|
||||||
startMethod.Invoke(watcher, null);
|
if (startMethod == null)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile("未找到ManagementEventWatcher.Start方法,跳过WMI监控", LogHelper.LogType.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
startMethod.Invoke(watcher, null);
|
||||||
|
}
|
||||||
|
catch (TargetInvocationException tiex)
|
||||||
|
{
|
||||||
|
var root = tiex.InnerException ?? tiex;
|
||||||
|
string rootType = root.GetType().FullName;
|
||||||
|
LogHelper.WriteLogToFile($"WMI监控启动失败: {rootType}: {root.Message}", LogHelper.LogType.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LogHelper.WriteLogToFile("已成功启动WMI进程监控");
|
LogHelper.WriteLogToFile("已成功启动WMI进程监控");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
LogHelper.WriteLogToFile($"动态加载WMI监控失败: {ex.Message}", LogHelper.LogType.Warning);
|
var root = ex is TargetInvocationException outerTie && outerTie.InnerException != null
|
||||||
|
? outerTie.InnerException
|
||||||
|
: ex;
|
||||||
|
string rootType = root.GetType().FullName;
|
||||||
|
LogHelper.WriteLogToFile($"动态加载WMI监控失败: {rootType}: {root.Message}", LogHelper.LogType.Warning);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (watcher != null)
|
||||||
|
{
|
||||||
|
var stopMethod = watcher.GetType().GetMethod("Stop");
|
||||||
|
stopMethod?.Invoke(watcher, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// 忽略清理阶段异常,避免覆盖原始错误信息
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user