尝试注册 WMI 任务会导致事件 ID 10 出现错误 0x80041010

尝试注册 WMI 任务会导致事件 ID 10 出现错误 0x80041010

我目前正在尝试在 WMI 中注册一个任务,以便在插入 USB 时运行脚本。为了进行测试,我编写了以下 .mof 文件(主要取自这里):

#PRAGMA NAMESPACE ("\\\\.\\root\\subscription")

instance of CommandLineEventConsumer as $Cons
{
    Name = "USB_Test";
    CommandLineTemplate = "C:\\Windows\\System32\\cmd.exe echo Hello, World! > testfile.txt";
    ExecutablePath = "C:\\Windows\\System32\\cmd.exe";
    WorkingDirectory = "C:\\Projects\\WMI";
};

instance of __EventFilter as $Filt
{
    EventNamespace = "\\root\\cimv2";
    Name = "USB_Test";
    Query = "SELECT * FROM __InstanceCreationEvent Within 5 "
            "Where TargetInstance Isa \"Win32_logicaldisk\" ";
    QueryLanguage = "WQL";
};

instance of __FilterToConsumerBinding
{ 
     Filter = $Filt;
     Consumer = $Cons;
};

我们将此文件命名为wmi.mof。当我运行mofcomp.exe .\wmi.mof控制台输出时,似乎表明该过程已成功。使用 WMI Explorer,我还可以看到 CommandLineEventConsumer、__EventFilter 和 __FilterToConsumerBinding。但是,我还会在 Windows 事件日志中看到以下条目:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    - <System>
          <Provider Name="Microsoft-Windows-WMI" Guid="{1edeee53-0afe-4609-b846-d8c0b2075b1f}" /> 
          <EventID>10</EventID> 
          <Version>2</Version> 
          <Level>2</Level> 
          <Task>0</Task> 
          <Opcode>0</Opcode> 
          <Keywords>0x8000000000000000</Keywords> 
          <TimeCreated SystemTime="2022-05-19T07:28:11.5064243Z" /> 
          <EventRecordID>108835</EventRecordID> 
          <Correlation ActivityID="{1a9c5853-650d-0006-43bb-9c1a0d65d801}" /> 
          <Execution ProcessID="7752" ThreadID="10424" /> 
          <Channel>Application</Channel> 
          <Computer>DESKTOP-GS3OHBK</Computer> 
          <Security UserID="S-1-5-18" /> 
      </System>
    - <UserData>
        - <data_0x8000003F xmlns="http://manifests.microsoft.com/win/2006/windows/WMI">
              <Query>//.//root/cimv2</Query> 
              <Namespace>SELECT * FROM __InstanceCreationEvent Within 5 Where TargetInstance Isa "Win32_logicaldisk"</Namespace> 
              <Error>0x80041010</Error> 
          </data_0x8000003F>
      </UserData>
  </Event>

我立即注意到的一件事是事件中Query和是如何Namespace切换的。它们在 .mof 文件中是正确的,当我使用 WMI Explorer 检查 __EventFilter 时也是如此。

尝试通过插入 USB 棒来触发事件不会产生任何结果。既没有创建 textfile.txt,也没有在 Windows 事件日志中看到任何错误。就像任务存在于 WMI 中,但没有执行任何操作一样。

这是我第一次尝试使用 WMI,所以很可能我在某个地方犯了一个初学者错误。到目前为止,我在谷歌上搜索这个问题都没有成功,所以我在这里创建了这个问题。

我想了解导致错误的原因,修复错误并使我的 WMI 任务正常运行。

编辑:为了便于理解,我还尝试通过 powershell 脚本注册 WMI 任务,但出现了同样的错误。因此,我认为这不是我的 .mof 文件的问题,而是 WMI 的问题(?)。

相关内容