我想创建代码,设置速度的机箱风扇,必须在Windows7上工作。
我尝试使用wmi代码生成器,但出现错误Invalid object path

    using System;
    using System.Management;
    using System.Windows.Forms;

    namespace WMISample
    {
        public class CallWMIMethod
        {
            public static void Main()
            {
                try
                {
                    ManagementObject classInstance =
                        new ManagementObject("root\\CIMV2",
                        "Win32_Fan.ReplaceKeyPropery='ReplaceKeyPropertyValue'",
                        null);

                    // Obtain in-parameters for the method
                    ManagementBaseObject inParams =
                        classInstance.GetMethodParameters("SetSpeed");

                    // Add the input parameters.
                    inParams["DesiredSpeed"] =  600;

                    // Execute the method and obtain the return values.
                    ManagementBaseObject outParams =
                        classInstance.InvokeMethod("SetSpeed", inParams, null);

                    // List outParams
                    Console.WriteLine("Out parameters:");
                    Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
                }
                catch(ManagementException err)
                {
                    MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
                }
            }
        }
    }

有没有可能去看一下风扇。有什么可以帮忙的吗?

最佳答案

您编译代码是因为它是有效的代码。它在运行时失败,因为您要求它做一些非法的事情。根据MSDN
设置速度未执行。
既然如此,这条线就会失败:

    ManagementBaseObject inParams =
        classInstance.GetMethodParameters("SetSpeed");

如果未实现SetSpeed(而不是简单地忽略),则在尝试检索与之相关的参数时会出现异常。删除try/catch以验证它发生在哪一行。
制造商可能有一个实用程序允许这样做,但它似乎怀疑wmi是否能工作。如果您确实找到了这样一个工具,您可能需要计算bool属性VariableSpeed以查看是否甚至支持变速。

10-01 12:54