ネットワーク アダプターの構成をローカルで変更しようとしています。管理者以外のユーザーを使用する必要がありますが、メソッドを呼び出そうとすると、「Access Denied」を表す戻り値「91」が返されます。「EnableStatic」メソッドの権限を設定することはできましたが、「SetDNSServerSearchOrder」はまったく機能しません。常に「アクセスが拒否されました」を返します。(Win32_NetworkAdapter で) ネットワーク アダプターを無効にすることさえできません。すべてが管理ユーザーでうまく機能します。私は「EnableStatic」で同じ問題を抱えていたので、他の方法でこれを機能させる方法があるに違いないと確信しています。すべての名前空間に対して wmimgmt.msc でセキュリティ オプションを設定し、dcomcnfg で制限を設定し、レジストリで tcpip のアクセス許可を付与しました。分散comユーザー、パフォーマンスグループ、ネットワーク構成オペレーターにユーザーを追加しましたが、これを機能させる方法はありません。ツールの実行中に dns ip がないことに気付きました。そのため、メソッドは「アクセスが拒否されました」を返していますが、何かが変わります。何か案は?Microsoft でさえ、まだ 3 週間もの間、私を助けることができませんでした。管理者としてログインしている場合、ツールは問題なく実行されています。これが私の C# コードです: 管理者としてログインしている場合、ツールは問題なく実行されています。これが私の C# コードです: 管理者としてログインしている場合、ツールは問題なく実行されています。これが私の 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);
}
}
}