首页 新闻 会员 周边

Wmi无法获取结果,求指教

0
悬赏园豆:5 [待解决问题]

我用wmi获取远程电脑的信息,
如果使用administrator ,下面两个查询都可以返回数据

SELECT * FROM Win32_DiskDrive
SELECT * FROM Win32_NTLogEvent

如果使用非administrator账号 ,第一个可以返回数据。第二个返回0条数据,
我估计是远程电脑设置的问题,但是不知道具体怎么做,请求帮忙,谢谢

Wmi
simadi的主页 simadi | 初学一级 | 园豆:134
提问于:2021-02-20 16:09
< >
分享
所有回答(2)
0

透過WMI 取得不同的系統資訊需要不同的系統權限
使用Admin 帳號是最快的做法
如果有安全上的考量,可以為該功能建一個專用的帳號,僅開需要的權限

RosonJ | 园豆:4910 (老鸟四级) | 2021-02-20 16:59

我用其他的账号是管理员的权限,也无法获取,求指教谢谢。

支持(0) 反对(0) simadi | 园豆:134 (初学一级) | 2021-02-22 10:19

@simadi:
帳號還有細部選項的設定喔,確定都跟Admin 一模一樣嗎?

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2021-02-22 10:21

@RosonJ: 不确定,不知道在哪儿设置,请指教,多谢了

支持(0) 反对(0) simadi | 园豆:134 (初学一级) | 2021-02-22 11:30

@simadi:
哪個版本的OS?看能不能找個圖給你參考

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2021-02-22 11:32

@RosonJ: win10,win server 16,多谢

支持(0) 反对(0) simadi | 园豆:134 (初学一级) | 2021-02-22 13:28

@simadi:

確認一下你用來執行的帳號使否加入這個使用者群組中

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2021-02-22 13:39

@simadi:
這兩個我都沒有喔
能否確認一下你是如何指定用特定帳號執行呢?

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2021-02-22 14:00

@RosonJ:

    public WMIService(string ip = ".", string userName = "", string password = "")
    {
        Ip = ip;
        UserName = userName;
        Password = password;
        ConnectionOptions Conn = new ConnectionOptions();
        if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password) || "127.0.0.1" == ip || "." == ip)
        {
            LocalConnection = true;
        }
        else
        {
            Conn.Username = userName;
            Conn.Password = password;
            Conn.Impersonation = ImpersonationLevel.Impersonate;
            Conn.Authentication = AuthenticationLevel.PacketPrivacy;
            Conn.EnablePrivileges = true;
        }
        Ms = new ManagementScope(path: string.Format("\\\\{0}\\root\\cimv2", ip), options: Conn);
    }

    public ManagementObjectCollection getQueryResult(string sql)
    {
        ManagementObjectCollection moc = null;
        try
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher(Ms, new ObjectQuery(sql));
            moc = mos.Get();
        }
        catch (Exception ex)
        {
            Logger.LogError($"{Ms.Path}\r\n{sql}",ex);
        }
        return moc;
    }

            var sql = $"SELECT ComputerName,Type,TimeGenerated,SourceName,EventCode,LogFile,CategoryString,RecordNumber FROM Win32_NTLogEvent";
            var moc = getQueryResult(sql);

得到结果 moc 数量是0,正常的话应该>0,使用这个语句 SELECT * FROM Win32_DiskDrive 是可以得到数据的

支持(0) 反对(0) simadi | 园豆:134 (初学一级) | 2021-02-22 14:05

@simadi:
看起來沒什麼問題

Conn.Authentication = AuthenticationLevel.PacketPrivacy;

這個是否試過使用Default ?

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2021-02-22 14:18

@RosonJ: 试了,也不行,我私信你吧

支持(0) 反对(0) simadi | 园豆:134 (初学一级) | 2021-02-22 14:24
0

可以尝试给账号提权。

为乐而来 | 园豆:1432 (小虾三级) | 2021-02-22 09:43

我用其他的账号是管理员的权限,也无法获取,求指教谢谢。

支持(0) 反对(0) simadi | 园豆:134 (初学一级) | 2021-02-22 10:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册