C#不支持?

时间:2014-04-07 04:06:36

标签: c# mono wmi

我有以下......

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

namespace WMISample
{
    public class CallWMIMethod
    {
        public static ushort GetMonitorBrightness() {
            using (var mclass = new ManagementClass("WmiMonitorBrightness")) {
                mclass.Scope = new ManagementScope(@"\\.\root\wmi");
                using (var instances = mclass.GetInstances()) {
                    foreach (ManagementObject instance in instances) {
                        return (byte) instance.GetPropertyValue("CurrentBrightness");
                    }
                }
            }
            return 0;
        }

        public static void SetMonitorBrightness(ushort brightness) {
            using (var mclass = new ManagementClass("WmiMonitorBrightnessMethods")) {
                mclass.Scope = new ManagementScope(@"\\.\root\wmi");
                using (var instances = mclass.GetInstances()) {
                    foreach (ManagementObject instance in instances) {
                        object[] args = new object[] { 1, brightness };
                        instance.InvokeMethod("WmiSetBrightness", args);
                    }
                }
            }
        }

        public static void Main()
        {
            Console.WriteLine (GetMonitorBrightness());
        }
    }
}

使用WMI获取显示器亮度是一件非常基本的事情。但我似乎无法运行它,我在foreach (ManagementObject instance in instances) { System.Management.ManagementException - Not supported时遇到错误{{1}}我不知道发生了什么。我正在使用monodevelop来编译它。它编译很好,只是在试图运行时死亡。我在Windows 7上,所以不是这样。 WMI服务正在运行。

我不确定发生了什么。

2 个答案:

答案 0 :(得分:1)

Mono兼容性页面明确指出System.Management未实现也不受支持,因为没有WMI的计数器部分等等。

http://mono-project.com/Compatibility

您必须包装Linux本机API以实现您在Windows上尝试执行的操作,这显然是您应该发布的另一个问题。

答案 1 :(得分:0)

问题可能是由于您自己的显卡驱动程序(它们是最新的)吗?

在网上搜索(寻找“WmiMonitorBrightness不支持”)有很多用户有自己的问题,特别是在笔记本电脑/笔记本电脑上(其中一些用户在将视频驱动程序升级到最新版本后修复了...你做过吗? ?)。

无论如何,StackOverflow上已经存在一个非常类似的问题:你可以找到它here