2015-05-22 68 views
0

我正在研究一個需要將PC IP地址重置爲特定IP和子網掩碼的工作工具。機器IP復位什麼也不做

我使用下面的代碼來嘗試更改IP(取自此頁:How can you change Network settings (IP Address, DNS, WINS, Host Name) with code in C#)。

問題是,這段代碼什麼也沒做。我的電腦本地連接的IP地址不變 - 它仍然通過DHCP自動設置。

幫助?

public void SetIP(string ip_address, string subnet_mask) 
    { 

     ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
     ManagementObjectCollection objMOC = objMC.GetInstances(); 

     foreach (ManagementObject objMO in objMOC) 
     { 
      if ((bool)objMO["IPEnabled"]) 
      { 
       try 
       { 
        ManagementBaseObject setIP; 
        ManagementBaseObject newIP = 
         objMO.GetMethodParameters("EnableStatic"); 

        newIP["IPAddress"] = new string[] { ip_address }; 
        newIP["SubnetMask"] = new string[] { subnet_mask }; 

        setIP = objMO.InvokeMethod("EnableStatic", newIP, null); 
       } 
       catch (Exception) 
       { 
        throw; 
       } 


      } 
     } 
    } 
+0

1)作爲setIP結果返回什麼? 2)你有沒有嘗試在管理員權限下運行它? –

+0

如何將setIP變成可讀結果? – steelfeathers

+0

好吧,以管理員身份運行使其工作,但我需要能夠重置IP即使不作爲管理員運行。有任何想法嗎? – steelfeathers

回答

1

如果你嘗試了,你應該得到失敗的原因:

MessageBox.Show("ReturnValue : " + setIP["ReturnValue"].ToString()); 

由OP試過,有這樣的結果:

這給了我2147749891作爲返回值。這對你來說意味着什麼?

由於Yury建議請確保您擁有管理員權限並且UAC不會阻止您。快速搜索這個錯誤的結果有:

WBEM_E_ACCESS_DENIED 2147749891(0x80041003)當前用戶不必

+0

這給我2147749891作爲返回值。這對你來說意味着什麼? – steelfeathers

+1

Yury建議確保您擁有管理員權限,並且UAC不會阻止您。對該錯誤的快速搜索導致... WBEM_E_ACCESS_DENIED 2147749891(0x80041003)當前用戶沒有執行操作的權限 – Drew

0

所以執行操作的權限,因爲我們想通了,到目前爲止,主要的原因是缺乏的特權。作爲MSDN說,大約ManagementObject.InvokeMethod(),您需要在完全受信任的執行範圍: https://msdn.microsoft.com/en-us/library/ssk42c11(v=vs.110).aspx

備註對直接調用方
.NET Framework安全
的完全信任。 部分受信任的代碼不能使用此成員。

所以,你確實需要在管理員帳戶或類似帳戶下運行此代碼段。