Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 08:24
Оценка:
Скажите как исправить?
В XP работает нормально, а в Windows 7 x64 не работает


public void setIP(string IPAddress,string SubnetMask, string Gateway) 
{ 
 
ManagementClass objMC = new ManagementClass(
    "Win32_NetworkAdapterConfiguration"); 
ManagementObjectCollection objMOC = objMC.GetInstances(); 

 
foreach(ManagementObject objMO in objMOC) 
{ 

      if (!(bool) objMO["IPEnabled"]) 
           continue; 


 
      try 
        { 
          ManagementBaseObject objNewIP = null; 
          ManagementBaseObject objSetIP = null; 
          ManagementBaseObject objNewGate = null; 

          
          objNewIP = objMO.GetMethodParameters("EnableStatic"); 
          objNewGate = objMO.GetMethodParameters("SetGateways"); 
          


          //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}; 
          
          objSetIP = objMO.InvokeMethod("EnableStatic",objNewIP,null); 
          objSetIP = objMO.InvokeMethod("SetGateways",objNewGate,null); 


          
          Console.WriteLine(
             "Updated IPAddress, SubnetMask and Default Gateway!"); 


        
        } 
        catch(Exception ex) 
        { 
              MessageBox.Show("Unable to Set IP : " + ex.Message); } 
        }
}
Re: Изменить ip не работает в Windows 7 x64
От: Pavel Dvorkin Россия  
Дата: 19.02.11 08:28
Оценка:
Здравствуйте, binom82, Вы писали:

B>В XP работает нормально, а в Windows 7 x64 не работает


Программа запускается под админом ? Имеет elevated privileges ?
With best regards
Pavel Dvorkin
Re[2]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 10:17
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:



PD>Программа запускается под админом ? Имеет elevated privileges ?


Под админом тоже не работает.

elevated privileges а это как (программа на C#)?
Re[3]: Изменить ip не работает в Windows 7 x64
От: Aen Sidhe Россия Просто блог
Дата: 19.02.11 10:30
Оценка:
Здравствуйте, binom82, Вы писали:

B>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Программа запускается под админом ? Имеет elevated privileges ?


B>Под админом тоже не работает.


B>elevated privileges а это как (программа на C#)?



http://stackoverflow.com/questions/573086/how-to-elevate-privileges-only-when-required
С уважением, Анатолий Попов.
ICQ: 995-908
Re[3]: Изменить ip не работает в Windows 7 x64
От: akasoft Россия  
Дата: 19.02.11 10:30
Оценка:
Здравствуйте, binom82, Вы писали:

B>Под админом тоже не работает.


Программа x64 или x86?
UAC запрашивает привелегии при запуске?
Какая версия .NET?
В .NET Framework Configuration (Mscorcfg.msc) даны соответствующие разрешения?
... << RSDN@Home 1.2.0 alpha 4 rev. 1492>> SQL Express 2008 R2
Re[4]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 10:49
Оценка:
Здравствуйте, akasoft, Вы писали:


B>>Под админом тоже не работает.


Программа x64 или x86? ---- стоит Any CPU (но пробовал x64 и x86 )
UAC запрашивает привелегии при запуске? ------ ничего не спрашивает (оно у меня на минимуме выставлено)
Какая версия .NET? ------- версия NF 4 CP
В .NET Framework Configuration (Mscorcfg.msc) даны соответствующие разрешения? -- Я не знаю как этого сделать

Прога на C# WinForms состоит буквально из одной функции setIP.
Re[5]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 11:20
Оценка:
Забыл сказать что читает он все установленные ip нормально
Re[6]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 11:33
Оценка:
насчет elevated privileges.
Сделал следующее, но не помогло

  public MainForm()
        {
            InitializeComponent();
            WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
         
        }
   

  private void button1_Click(object sender, EventArgs e)
        {
            RunElevated(Application.ExecutablePath);
            //Close this instance because we have an elevated instance
            this.Close();
        }
        private void RunElevated(string fileName)
        {
            ProcessStartInfo processInfo = new ProcessStartInfo();
            processInfo.Verb = "runas";
            processInfo.FileName = fileName;
            try
            {
                Process.Start(processInfo);
            }
            catch (Win32Exception)
            {
                //Do nothing. Probably the user canceled the UAC window
            }
        }
Re[4]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 12:16
Оценка:
Здравствуйте, akasoft, Вы писали:

В .NET Framework Configuration (Mscorcfg.msc) — XP работает без проблем хотя я разрешений не давал
Может тут все таки дело в разрядности OS?
Re[5]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 19.02.11 13:55
Оценка:
Скомпилировал под NF 2.0 дал разрешение всем сборкам fulltrust не помогло.
Люди помогите , срочно надо!!!
Re: Изменить ip не работает в Windows 7 x64
От: Pavel Dvorkin Россия  
Дата: 19.02.11 14:16
Оценка:
Здравствуйте, binom82, Вы писали:

catch(Exception ex)
B> {
B> MessageBox.Show("Unable to Set IP : " + ex.Message); }
B> }
B>}

0. Запусти программу Run As Administrator. Что получилось ?
1. Если не помог (0), не лови тут Exception, пусть он произойдет и дай его полное описание и StackTrace.
With best regards
Pavel Dvorkin
Re[2]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 20.02.11 02:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:



PD> catch(Exception ex)

B>> {
B>> MessageBox.Show("Unable to Set IP : " + ex.Message); }
B>> }
B>>}

PD>0. Запусти программу Run As Administrator. Что получилось ?

PD>1. Если не помог (0), не лови тут Exception, пусть он произойдет и дай его полное описание и StackTrace.

Перестал ловить Exeption но ни каких ошибок не возникает.

Выкладываю свой проект. Может кто поможет?
http://files.rsdn.ru/64243/IPChange%20-%201.rar
Re[3]: Изменить ip не работает в Windows 7 x64
От: Pavel Dvorkin Россия  
Дата: 20.02.11 05:16
Оценка:
Здравствуйте, binom82, Вы писали:


B>Перестал ловить Exeption но ни каких ошибок не возникает.




B>Выкладываю свой проект. Может кто поможет?

B>http://files.rsdn.ru/64243/IPChange%20-%201.rar

Я бы попробовал, но виртуальной семерки у меня нет, а экспериментировать над живой системой не буду.
With best regards
Pavel Dvorkin
Re[4]: Изменить ip не работает в Windows 7 x64
От: binom82 Россия  
Дата: 20.02.11 06:39
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:



PD>Я бы попробовал, но виртуальной семерки у меня нет, а экспериментировать над живой системой не буду.


А че тут пробовать то?
Нужно добавить толь один дополнительный ip из списка в текстовом файле.
Прога будет изменять только его, а все остальный настройки которые у вас есть останутся неизменными.

Люди помогите пожалуйста
Re[5]: Изменить ip не работает в Windows 7 x64
От: Pavel Dvorkin Россия  
Дата: 20.02.11 08:23
Оценка:
Здравствуйте, binom82, Вы писали:

Могу только одно пока сказать.

Судя по всему, там используется вот это

http://msdn.microsoft.com/en-us/library/aa390383(v=vs.85).aspx

Этот метод возвращает код ошибки, они там же. Как его вытащить из objSetIP и оттуда ли вообще его вытаскивать — я не знаю, потому что никогда с этим дела не имел. Если сумеешь его вытащить — можно будет попробовать понять, что произошло.
With best regards
Pavel Dvorkin
Re: Изменить ip не работает в Windows 7 x64
От: nauro Украина  
Дата: 20.02.11 08:53
Оценка:
Здравствуйте, binom82, Вы писали:

B>Скажите как исправить?

B>В XP работает нормально, а в Windows 7 x64 не работает
незнаю, может уже видел, но посмотри сначала сюда: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/b95f7f13-dbb9-4b8f-bef1-d9ec7410bd6e, и оттдуда по ссылке сюда: http://stackoverflow.com/questions/209779/how-can-you-change-network-settings-ip-address-dns-wins-host-name-with-code
-----------------------------------------
тут может быть ваша реклама
Re[6]: дополнение
От: Pavel Dvorkin Россия  
Дата: 20.02.11 09:25
Оценка:
Если написать вот такое


                            objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, null);
                            uint o= (uint)objSetIP["returnValue"];
                            s = o.ToString();
                            label2.Text = o.ToString(); // label2 на твоей форме завел для отображения


то при обычном запуске туда заносится значение 2147749891

Смотрим по Гуглу

http://www.google.ru/#sclient=psy&amp;hl=ru&amp;newwindow=1&amp;q=2147749891+WMI&amp;aq=f&amp;aqi=&amp;aql=f&amp;oq=&amp;pbx=1&amp;fp=733fcd2db0629a49

и находим

http://msdn.microsoft.com/en-us/library/aa394559(v=vs.85).aspx

WBEM_E_ACCESS_DENIED
2147749891 (0x80041003) Current user does not have permission to perform the action

Неудивительно. Найдем EXE и запустим его Run As Administrator

Запустил. Теперь 0.

А вот что там сделалось — не понял. Интернет работать перестал, пришлось реконнектиться, поэтому эксперименты прекратил
With best regards
Pavel Dvorkin
Re[7]: дополнение
От: binom82 Россия  
Дата: 20.02.11 12:49
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:



PD>Запустил. Теперь 0.


PD>А вот что там сделалось — не понял. Интернет работать перестал, пришлось реконнектиться, поэтому эксперименты прекратил


Я так уже сто раз пробовал. Как я ее только не запускал (и с галочкой администратора тоже). Пробовал на двух компах.
Прога изменяет только тот адрес который есть в списке в текстовом файле. Если вы добавили этот адрес как дополнительный, то все
остальные настройки останутся. Прога их просто пересохраняет.

А у вас Win7 x64 или 32? Потому что у меня x64. Но вообще мне нужно чтобы она работала на win server 2008 r2 x64 завтра на ней проверю.

Здравствуйте, nauro, Вы писали:


N>незнаю, может уже видел, но посмотри сначала сюда: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/b95f7f13-dbb9-4b8f-bef1-d9ec7410bd6e, и оттдуда по ссылке сюда: http://stackoverflow.com/questions/209779/how-can-you-change-network-settings-ip-address-dns-wins-host-name-with-code


Этот код я оттуда и взял
Re[8]: дополнение
От: Pavel Dvorkin Россия  
Дата: 20.02.11 12:53
Оценка:
Здравствуйте, binom82, Вы писали:


B>А у вас Win7 x64 или 32?


x64. Кстати, проверьте под W7-x86
With best regards
Pavel Dvorkin
Re[8]: BTW
От: Pavel Dvorkin Россия  
Дата: 20.02.11 12:59
Оценка:
Здравствуйте, binom82, Вы писали:

Если решения найти не удастся, то вот здесь альтернативный метод изменения IP. Права администратора и повышенные привилегии обязательны.

За употребление его я ответственноси не несу

http://www.codeguru.com/Cpp/I-N/internet/generalinternet/article.php/c3459/
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.