| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Изменение IP адреса |
| Автор: Bima 17.8.2006, 09:35 |
| Недавно наткнулся на топик в котором сказано, как поменять IP адрес через реестр, сделал программу, но у этой программы есть только один минус: что бы изменения вступили в силу нужно перезагрузится!!! Хотя если я меняю через свойства IP протокола свой IP адрес, то изменения вступают сразу. Думаю, что дело не только в реестре, а в фунциях, которые меняют эти параметры сразу. Может кто встречал такую проблему??? |
| Автор: dumb 17.8.2006, 11:18 |
| http://forum.vingrad.ru/index.php?showtopic=107950#entry822652 |
| Автор: Bima 17.8.2006, 11:27 | ||
Уважаемый dumb. Эту тему, на которую вы даете мне ссылку, я сам создавал!!! В ней я пытался разобраться как написать программу, которая правит реестр. Но тем неменее проблема остается, так как все равно нужна перезагрузка, а мне нужно сразу поменять IP. |
| Автор: dumb 17.8.2006, 11:41 |
| да екарный бабай! текст моего поста прочти внимательно хотя бы один раз и нажми на ссылку. обратить особое внимание на ссылку после фразы "и вообще"... ![]() |
| Автор: Bima 17.8.2006, 13:01 |
| Пордон, не увидел (прошу прощения) блин, там столько функций |
| Автор: Bima 18.8.2006, 13:02 |
| C IP адресом разобрался, теперь вопрос другой, можно ли программно поменять HostName и ComputerName. Через реестр знаю как, но думаю, что там такая же проблем, как и с IP. в IPHelper не нашел |
| Автор: dumb 18.8.2006, 13:38 | ||
| http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/computer_names.asp Добавлено @ 13:39 обратить внимание на
|
| Автор: Bima 18.8.2006, 14:21 | ||||||||
Вот мой код:
да, имя компа меняется, также можно использовать вместо последней строки, сточку:
А, еще такой эффект дает вот такой код:
так с ComputerName разобрался, а как быть HostName??? если его править в реестре кодом, типа:
то компьютер начинает пинговаться по этому адресу, но после загрузки ничего не остается |
| Автор: HappyLife 18.8.2006, 14:25 |
| Нач нужно менять не только здесь. По видимому он восстанавливает значения из другого ключа реестра. |
| Автор: Bima 18.8.2006, 14:34 |
| сходу вопрос... С КАКОГО???? и что неужели API функций нету??? |
| Автор: Romikgy 18.8.2006, 15:03 |
| regmon те в руки |
| Автор: Bima 18.8.2006, 15:07 |
| слишком многопроцессов общаются с реестром, не отслежу. К тому же реестр это не выход, на мой взгляд, ведь винда скорее всего правит API функциями, а реестр, потом правит, хотя даже в ней нужна перезагрузка, для смены имени |
| Автор: dumb 18.8.2006, 15:18 |
| странно. мне показалось что-ли... я вроде привел цитату из мсдна относительно перезагрузки?.. короче. по идее, все эти имена должны быть одинаковыми, а то есть у меня подозрение, что ты их разными делаешь. а логика "восстановления" Hostname такая - процесс winlogon'а просто копирует туда значение из "NV hostname", который, в свою очередь, устанавливается функцией SetComputerNameEx. так что чтобы было все ажурно нужно вызывать SetComputerNameEx, а потом прописывать в реестр Hostname(такой же, как и при вызове SetComputerNameEx). |
| Автор: Bima 18.8.2006, 15:56 | ||
| А вот нифига не получается!!! вот мой код:
Там нетрудно заметить, есть два поля. В них я ввожу одинаковые значения. После выполнения кода, и ПЕРЕЗАГРУЗКИ компьютера ничего не происходит, то есть ComputerName меняется, как и раньше (хотя оно меняется и до перезагрузки), а вот HostName, как до, так и после перезагрузки не меняется. Есть одна закономерность.... если менять HostName то комп пингуется по этому имени только до перезагрузки, а вот если менять ComputerName, то комп пингуется по этому имени после перезагрузки. |
| Автор: dumb 18.8.2006, 16:15 | ||||||
| тьпу. увидел у тебя косяк, но забыл написать... причем предыдущий код
был более правильным - он хоть работал. а это:
ничего не делает и просто выпадает с ошибкой. описание внимательней читай: SetComputerNameEx принимает только три варианта - ComputerNamePhysicalDnsDomain, ComputerNamePhysicalDnsHostname, ComputerNamePhysicalNetBIOS вобщем:
и еще раз повторю - имя должно быть одинаковое! |
| Автор: Bima 21.8.2006, 09:39 |
| А зачем нужно преобразовывать имя компьютера в нижней регистр символов??? Дело в том, что при таком коде, выходит, что ComputerName у меня отображается большими буквами, а HostName маленькими, хотя к ним обоим применен оператор LowerCase. И имена я писал одинаковые, например Comp1 |