none
c# 获取CPU温度方法 RRS feed

  • 问题

  • 下面是一种方法,但需要管理员方式,有不要管理员方式的吗?或者能让管理员方式程序不点击那个WIN7里面的确定,他能够自动运行?我想把温度查看的代码放到一个开机自启动的程序里面。

    谢谢大家!

     public static void  GetWenDu()
            {
                try
                {
                    Double CPUtprt = 0;
                    ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\WMI", "Select * From MSAcpi_ThermalZoneTemperature");

                    foreach (System.Management.ManagementObject mo in mos.Get())
                    {
                        CPUtprt = Convert.ToDouble(Convert.ToDouble(mo.GetPropertyValue("CurrentTemperature").ToString()) - 2732) / 10;
                        MessageBox.Show("CPU 溫度 : " + CPUtprt.ToString() + " °C");
                    }
                }
                catch (Exception exc)
                {
                    MessageBox.Show(exc .ToString ());
                }
            }

    2011年8月3日 9:49

答案

  • Hi 金钱豹,

    WMI获取系统信息,安全限制级别是很高的,需要系统管理员权限, 您可以按如下流程解决权限限制的问题:
    1检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的forceguest的值.
    该值必须为0(dword:00000000)

    2单击“开始”,单击“运行”,键入 DCOMCNFG,然后单击“确定”。在“组件服务”对话框中,依次展开“组件服务”、“计算机”,然后展开“我的电脑”。在工具栏上,单击“配置‘我的电脑’”按钮。随即显示“我的电脑”对话框。在“我的电脑”对话框中,单击“COM 安全”选项卡.在“启动和激活权限”下,单击“编辑限制”。在“启动权限”对话框中,如果您的名称或您的组未显示在“组或用户名称”列表中,请按照下列步骤操作:
    a. 在“启动权限”对话框中,单击“添加”。
    b. 在“选择用户、计算机或组”对话框中,将您的名称和组添加到“输入对象名称来选择”框中,然后单击“确定”。
    在“启动权限”对话框中,在“组或用户名称”框内选择您的用户和组。在“用户权限”下的“允许”栏中,选择“远程启动”,然后单击“确定”。

    3.防火墙,具体的在http://support.microsoft.com/kb/875605/zh-cn有解决方案.

    要想你的程序能够开机运行,你可以开发一个Windows Service:
    http://msdn.microsoft.com/zh-cn/library/d56de412(v=vs.80).aspx.


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年8月4日 5:33
    版主

全部回复

  • Hi 金钱豹,

    WMI获取系统信息,安全限制级别是很高的,需要系统管理员权限, 您可以按如下流程解决权限限制的问题:
    1检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的forceguest的值.
    该值必须为0(dword:00000000)

    2单击“开始”,单击“运行”,键入 DCOMCNFG,然后单击“确定”。在“组件服务”对话框中,依次展开“组件服务”、“计算机”,然后展开“我的电脑”。在工具栏上,单击“配置‘我的电脑’”按钮。随即显示“我的电脑”对话框。在“我的电脑”对话框中,单击“COM 安全”选项卡.在“启动和激活权限”下,单击“编辑限制”。在“启动权限”对话框中,如果您的名称或您的组未显示在“组或用户名称”列表中,请按照下列步骤操作:
    a. 在“启动权限”对话框中,单击“添加”。
    b. 在“选择用户、计算机或组”对话框中,将您的名称和组添加到“输入对象名称来选择”框中,然后单击“确定”。
    在“启动权限”对话框中,在“组或用户名称”框内选择您的用户和组。在“用户权限”下的“允许”栏中,选择“远程启动”,然后单击“确定”。

    3.防火墙,具体的在http://support.microsoft.com/kb/875605/zh-cn有解决方案.

    要想你的程序能够开机运行,你可以开发一个Windows Service:
    http://msdn.microsoft.com/zh-cn/library/d56de412(v=vs.80).aspx.


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年8月4日 5:33
    版主
  • 非常感谢LEO LIU的回复啊!

    不过,我希望的是通过代码的方式来自动实现这个CPU温度的查看功能!

    现在问题是WMI需要点击权限运行认可才能运行,不能无人自动运行,我想的就是一种无人自动运行的状态。

    如果把WMI代码放到服务里面,需要权限认可吗?

     

    2011年8月4日 5:56
  • >> 不过,我希望的是通过代码的方式来自动实现这个CPU温度的查看功能!
    Windows Service也是编代码的, 只需要把你之前的代码放进去就行, 安装Windows Service之后是开机启动的.

    >> 现在问题是WMI需要点击权限运行认可才能运行,不能无人自动运行,我想的就是一种无人自动运行的状态. 如果把WMI代码放到服务里面,需要权限认可吗?
    按照之前提供的步骤把系统当前账户加到管理员组里面就行.
    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月5日 5:21
    版主
  • Hi 金钱豹,
    你的代码写的如何了?
    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月9日 2:45
    版主
  • 你好啊!还没有实现这个啊!

    2011年8月16日 14:16
  • 那现在的进展如何了?
    碰到了什么具体问题吗?
    建议你先写写Window Service,碰到具体问题了贴到这里, 让论坛的朋友帮你解答.


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月17日 3:12
    版主
  • Visual Studio 里面可以设置强制让app获得的管理员权限

    这里有个使用OpenHardwaremonitor 以及WMI 获取CPU 温度的帖子,亲测有效

    http://bit.ly/openhardwaremonitorgetcputemp


    2018年1月29日 2:31
  • OpenHardwaremonitor 不支持新款CPU,比如8700K这种,只能获得一个占用率,其他比如温度、核心频率之类的都拿不到。

    有没有别的办法?

    2018年5月12日 14:36