标签: wmi-query

使用WMI远程卸载应用程序

我正在尝试使用WMI编写一个mini w32可执行文件来远程卸载应用程序.

我可以使用下面的代码列出所有已安装的应用程序,但我找不到通过WMI和C#远程卸载应用程序的方法

我知道我可以使用msiexec作为一个过程来做同样的事情,但我希望使用WMI解决这个问题,如果可能的话......

谢谢,Cem

static void RemoteUninstall(string appname)
{
    ConnectionOptions options = new ConnectionOptions();
    options.Username = "administrator";
    options.Password = "xxx";
    ManagementScope scope = new ManagementScope("\\\\192.168.10.111\\root\\cimv2", options);
    scope.Connect();


    ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Product");

    ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
    ManagementObjectCollection queryCollection = searcher.Get();

    foreach (ManagementObject m in queryCollection)
    {
        // Display the remote computer information

        Console.WriteLine("Name : {0}", m["Name"]);

        if (m["Name"] == appname)
        {
            Console.WriteLine(appname + " found and will be uninstalled... but how");
            //need to uninstall …
Run Code Online (Sandbox Code Playgroud)

c# wmi uninstall uninstallation wmi-query

4
推荐指数
1
解决办法
8619
查看次数

使用WMI监控驱动器

我正在尝试监控本地PC的驱动器.我对两个事件感兴趣:连接驱动器(USB驱动器,CD-ROM,网络驱动器等)并断开连接.我使用ManagementOperationObserver编写了一个快速的概念证明,它部分工作.现在(使用下面的代码),我得到了各种各样的事件.我想只在连接和断开驱动器时获取事件.有没有办法在Wql查询中指定它?

谢谢!

    private void button2_Click(object sender, EventArgs e)
    {
        t = new Thread(new ParameterizedThreadStart(o =>
        {
            WqlEventQuery q;
            ManagementOperationObserver observer = new ManagementOperationObserver();

            ManagementScope scope = new ManagementScope("root\\CIMV2");
            scope.Options.EnablePrivileges = true;

            q = new WqlEventQuery();
            q.EventClassName = "__InstanceOperationEvent";
            q.WithinInterval = new TimeSpan(0, 0, 3);
            q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk' ";
            w = new ManagementEventWatcher(scope, q);

            w.EventArrived += new EventArrivedEventHandler(w_EventArrived);
            w.Start();
        }));

        t.Start();
    }

    void w_EventArrived(object sender, EventArrivedEventArgs e)
    {
        //Get the Event object and display its properties (all)
        foreach (PropertyData …
Run Code Online (Sandbox Code Playgroud)

c# wmi wmi-query

4
推荐指数
1
解决办法
2918
查看次数

是否有针对后Delphi 2007的WmiSet的替换或更新?

我们目前使用WmiSet网上联系到远程机器上运行的WMI查询和查询注册表设置.

问题是它只支持Delphi直到RAD Studio 2007.

我们目前正在升级到Delphi XE,需要知道是否有人知道 - 或者有 - 更新版本的WmiSet组件或类似的东西.

我们已尝试与供应商联系,但到目前为止,我们的任何查询都没有任何回复.

delphi wmi wmi-query

4
推荐指数
1
解决办法
655
查看次数

减少WMI查询执行时间

在我的应用程序中,我想看看Windows 7是否被激活.要清楚,我不想检查窗户是否是正品.我使用下面的代码,在这里找到http://www.dreamincode.net/forums/topic/166690-wmi-softwarelicensingproduct/

执行查询所需的时间约为5-10秒.反正有没有减少所需的时间?或者另一种检查winows 7是否被激活的方法?

public string VistaOrNewerStatus(){
string status = string.Empty;
string computer = ".";
try
{
    //set the scope of this search
    ManagementScope scope = new ManagementScope(@"\\" + computer + @"\root\cimv2");
    //connect to the machine
    scope.Connect();

    //use a SelectQuery to tell what we're searching in
    SelectQuery searchQuery = new SelectQuery("SELECT * FROM SoftwareLicensingProduct");

    //set the search up
    ManagementObjectSearcher searcherObj = new ManagementObjectSearcher(scope, searchQuery);

    //get the results into a collection
    using (ManagementObjectCollection obj = searcherObj.Get())
    {
        MessageBox.Show(obj.Count.ToString());
        //now loop …
Run Code Online (Sandbox Code Playgroud)

c# wmi-query execution-time

4
推荐指数
1
解决办法
2713
查看次数

调用GetOwner时出现InvalidOperationException

在以下代码中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Diagnostics;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string javaProcWql = string.Format("SELECT ProcessId, Name, CommandLine FROM Win32_Process WHERE Name = '{0}' AND CommandLine LIKE '%{1}%'", "firefox.exe", "firefox");
            ManagementObjectSearcher mos = new ManagementObjectSearcher(javaProcWql);
            foreach (ManagementObject mo in mos.Get())
            {
                Console.WriteLine(mo["ProcessId"]);
                string[] userinfo = new string[2];
                mo.InvokeMethod("GetOwner", (object[])userinfo);
                Console.WriteLine("ha ha --> " + userinfo[1] + "\\" + userinfo[0]);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到InvalidOperationException了消息以及异常是

"由于对象的当前状态,操作无效" …

.net c# wmi wmi-query

4
推荐指数
1
解决办法
829
查看次数

DVD或CD播放器?

我想知道我的播放器是DVD还是CD播放器......

我试过了 :

SELECT Drive, MediaType, Caption FROM Win32_CDROMDrive
Run Code Online (Sandbox Code Playgroud)

MediaType 在XP上不起作用,在Seven上也不是很好.

我尝试在MediaType中找到一台带有1个播放器(Cd Writer/DVD-ROM)的计算机(带有Windows 7)Cd Writer.

二解决方案:

如果我找到"DVD",我在"标题"中搜索

我尝试了一个软件(SIW - Windows的系统信息)和我的播放器属性:

能力:

CD阅读器:CD ROM,CD R,CD RW

CD刻录机:CD R,CD RW

DVD阅读器:DVD ROM,DVD R,DVD RW,DVD RAM

DVD编剧:没有

SMART支持:否

所以,我想知道:使用WMI查询(或其他解决方案,我使用C++),我是否可以拥有相同的信息?

如果可以的话会很棒!如果我不能,我只保留我的"字符串解析".

c++ hardware optical-drive wmi-query detection

3
推荐指数
1
解决办法
957
查看次数

在远程计算机WMI C#上搜索文件

我想在远程机器上搜索文件.我不知道EXACT文件路径,但我知道它在C:\ Windows\System下

我的查询在WMI中是这样的

string querystr = "SELECT * FROM CIM_DataFile Where Path='C:\\Windows\\System'";
ObjectQuery query = new ObjectQuery(querystr );
ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, query);
Run Code Online (Sandbox Code Playgroud)

我得到无效的查询错误.

查询有效吗?有什么方法可以指定Path Under吗?

c# wmi wmi-query

3
推荐指数
1
解决办法
5038
查看次数

列出C++中WMI类的所有属性

Deos是否有人知道在C++中获取给定WMI类中每个可用属性的完整列表?我在SO上发现了一些类似的问题,但它们都使用Powershell,VB或C#.

c++ wmi wmi-query

3
推荐指数
1
解决办法
4867
查看次数

WMI-从Win32_Product中选择需要很长时间

我正在枚举使用WMI安装的应用程序,而无论我如何构造它,此块都需要花费较长的时间才能完成。每次在我的环境中花费13秒。有没有更好(更快)的方法来检查程序是否已安装?(我使用iTunes作为示例程序进行检查)

    private static string Timestamp
    {
        get { return DateTime.Now.ToString("HH:mm:ss.ffff"); }
    }

    private static void LoadInstalledPrograms()
    {
        List<string> installedPrograms = new List<string>();
        Console.WriteLine("0 - {0}", Timestamp);
        ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
        Console.WriteLine("1 - {0}", Timestamp);
        ManagementObjectCollection managementObjectCollection = mos.Get();
        Console.WriteLine("2 - {0}", Timestamp);
        foreach (ManagementObject mo in managementObjectCollection)
        {
            installedPrograms.Add(mo["Name"].ToString());
        }
        Console.WriteLine("3 - {0}", Timestamp);
        Console.WriteLine("Length - {0}", installedPrograms.Count);
    }
Run Code Online (Sandbox Code Playgroud)

选择*从Win32_Product

0 - 08:08:51.3762
1 - 08:08:51.3942
2 - 08:08:51.4012
3 - 08:09:04.8326
Length - 300
Run Code Online (Sandbox Code Playgroud)

SELECT …

c# wmi wmi-query

3
推荐指数
1
解决办法
7449
查看次数

来自共享路径的本地路径:Powershell

如何查找共享路径的本地路径。

我的共享路径是 \\somemachine\shared\scripts\testing

它的本地路径是 D:\myshares\scripts\testing

谢谢!

powershell wmi unc wmi-query

2
推荐指数
1
解决办法
4898
查看次数