【问题标题】:WMI set variable in LINUX?WMI 在 LINUX 中设置变量?
【发布时间】:2016-10-30 17:05:41
【问题描述】:

这个 vb.net snipplet 的等效代码在 Linux 中是什么:

    Public Sub SwitchGFX() 
' Switches GFX card on MSI Notebooks
' Coded by Zibri http://www.zibri.org
        Dim mo As New ManagementObject("\root\WMI:MSI_System.InstanceName=""ACPI\\PNP0C14\\0_4""")
        mo.SetPropertyValue("System", 1)
        mo.Put()
    End Sub

或者这个 windows shell 命令:

wmic /namespace:\\root\wmi path MSI_System.InstanceName="ACPI\\PNP0C14\\0_4" set System=0
wmic /namespace:\\root\wmi path MSI_System.InstanceName="ACPI\\PNP0C14\\0_4" set System=1

附: 此代码将 MSI 笔记本电脑上的 VGA 从 Intel 切换到 NVIDIA。

【问题讨论】:

    标签: linux vb.net windows wmi


    【解决方案1】:

    WMI 很可能无法在 Linux 上运行,因为它需要 Windows 的 WMI 服务。但是,this article 提到了如何通过终端命令切换到另一个 GPU(参见步骤 4 的底部)。因此,结合with some research 如何从 .NET 运行 Linux 终端命令(顺便说一下,答案似乎是 Bash),我想这可能是一个潜在的解决方案:

    Public Sub SwitchToNVIDIA()
        Process.Start("/bin/bash", "prime-select nvidia")
    End Sub
    
    Public Sub SwitchToIntel()
        Process.Start("/bin/bash", "prime-select intel")
    End Sub
    

    【讨论】:

    • 不。我可以在 WINDOWS 中使用 wmi 切换显卡(我反转了 MSI 实用程序并了解如何操作)。我需要在linux中做同样的事情,是的:有一种方法可以从linux访问wmi ..看看fwts。您发布的是一个运行 bash 的 dot.net 程序。我在 LINUX 上。
    • @Zibri:当然这是一个 .NET 程序!这不是你要求的吗?您可以通过 Mono 在 Linux 上运行 .NET 应用程序!
    • Linux 不是一种编程语言,那你想要它是什么语言呢?如果你想要的不是 VB.NET,那么你的问题就很不清楚了。
    • @Zibri :为什么你那么迫切地希望它成为 WMI?这两个简短的 bash 命令有什么问题吗?
    • 我会更清楚:那篇文章不适用于我的笔记本电脑。素选不起作用。它以专有方式切换视频卡。为此,它在 WMI 中使用映射的 bios 条目......在 Windows 上我没有问题以编程方式进行,因为我颠倒了他们的软件并理解了如何去做。在linux上暂时没有办法。唯一的方法是使用 WMI(在 linux 中映射!)或直接 bios nvram 写入(我可能会这样做)。这与 VB NET 或 MONO 无关。因为即使在 linux 上拥有完整的 .NET,我们也不会映射该 WMI 条目。
    【解决方案2】:

    没关系。我颠倒了 MSI 软件并在 Linux 和 efi shell 中复制了开关。 现在不再需要windows来切换显卡了。

    我会在我的网站上发布所有内容http://www.zibri.org

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 2015-02-14
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2020-10-13
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多