我正在尝试在本地更改网络适配器的一些配置。我必须使用非管理用户,但是当我尝试调用方法时,我只得到返回值“91”,它代表“拒绝访问”。可以设置“EnableStatic”方法的权限,但“SetDNSServerSearchOrder”根本不起作用。它总是返回“拒绝访问”。我甚至无法禁用网络适配器(在Win32_NetworkAdapter中)。管理员用户的一切都很棒。由于我对“EnableStatic”有同样的问题,我很确定,必须有一种方法可以使用其他方法。我在wmimgmt.msc中为所有名称空间设置了安全选项,我在dcomcnfg中设置了限制,我在注册表中为tcpip授予了权限,在分布式com用户,性能组,网络配置运营商中添加了用户,但是没有办法让这个工作。我认识到,当我的工具运行时,没有dns ip。所以虽然方法返回“拒绝访问”,但是有些东西发生了变化。有任何想法吗?自从三周以来,即便是微软也无法帮助我。当我以管理员身份登录时,该工具正在运行,没有任何问题。这是我的C#代码:(对于我的书面英语中的一些错误感到抱歉;)
private static ManagementScope CreateScope(string strScope)
{
ManagementScope scope = new ManagementScope(strScope);
scope.Options.Impersonation = ImpersonationLevel.Impersonate;
scope.Options.Authentication = AuthenticationLevel.Packet;
return scope;
}
public static void SetIP(String strScope, String strQuery, string IPAddress, string SubnetMask, string Gateway, string DNSServer1, string DNSServer2)
{
ManagementScope scope = CreateScope(strScope);
SelectQuery query = new SelectQuery(strQuery);
Collection<object> objCol = new Collection<object>();
scope.Connect();
ManagementObjectCollection mobjCol = null;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
mobjCol = searcher.Get();
}
foreach (ManagementObject objMO in mobjCol)
{
try
{
ManagementBaseObject objNewIP = null;
ManagementBaseObject objSetIP = null;
ManagementBaseObject objNewGate = null;
ManagementBaseObject objNewDNS = null;
objNewIP = objMO.GetMethodParameters("EnableStatic");
objNewGate = objMO.GetMethodParameters("SetGateways");
objNewDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder");
//Set DefaultGateway
objNewGate["DefaultIPGateway"] = new string[] { Gateway };
objNewGate["GatewayCostMetric"] = new int[] { 1 };
//Set IPAddress and Subnet Mask
objNewIP["IPAddress"] = new string[] { IPAddress };
objNewIP["SubnetMask"] = new string[] { SubnetMask };
//Set DNS servers
objNewDNS["DNSServerSearchOrder"] = new string[] { DNSServer1, DNSServer2 };
//Invoke all changes
objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, null);
MessageBox.Show("EnableStatic: " + objSetIP["ReturnValue"].ToString());
objSetIP = objMO.InvokeMethod("SetGateways", objNewGate, null);
MessageBox.Show("SetGateways: " + objSetIP["ReturnValue"].ToString());
objSetIP = objMO.InvokeMethod("SetDNSServerSearchOrder", objNewDNS,null);
MessageBox.Show("SetDNSServerSearchOrder: " + objSetIP["ReturnValue"].ToString());
}
catch (ManagementException ex)
{
MessageBox.Show("Unable to Set IP : " + ex.Message);
}
}
}
答案 0 :(得分:0)
非管理用户需要具有运行WMI查询的权限。您可以使用WMI Control设置相关权限[在ServerManager / Configuration或Computer Management / Services&amp;应用] ref:http://technet.microsoft.com/en-us/library/cc775497(v=ws.10).aspx
尝试提供执行方法,启用帐户&amp;提供者对CIMV2名称空间中的非管理员用户的写权限。