Что нового

Неправильно прописывается IP в файл hosts на Windows Seven

prokazzza

Новичок
Сообщения
160
Репутация
2
Вот такая проблемка, не могу понять почему некоректно работает скрипт на семерке, на ХП отрабатывает все норма.

Код:
#include <File.au3>

If WinExists(@ScriptName) Then Exit
	
Func ipconfig($lookfor = "IP-адрес")
    $cmd = Run(@ComSpec & " /c " & 'ipconfig /all', "", @SW_HIDE, 2+4)
    While 1
        $line = StdoutRead($cmd)
        If @error Then Return "Error"
        if StringInStr($line,$lookfor) then ExitLoop
	WEnd
    $Data = StringSplit(StringStripWS($line,7),$lookfor,1)
    $Data = StringSplit($Data[2],":",1)
    $Data = StringSplit($Data[2],"Маска",1)
    $Data = StringStripWS($Data[1],7)
    Return $Data
EndFunc
$IP=ipconfig()
	_FileWriteToLine(@SystemDir& "\drivers\etc\hosts", 20 $IP & '	server.net', 1)


Вместо ИП в hosts прописывается вот такое значение

Код:
Error server.net

Заранее благодарю за помошь.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: Неправильно работет скрипт на Windows Seven

Открыты ли права на запись hosts для Администратора?
Программа запускается от имени администратора?
UAC отключен?
И советую добавить:
Код:
#RequireAdmin


И еще советую сменить название темы. Что бы там присутствовало хотя бы hosts.
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Открыты ли права на запись hosts для Администратора?
Программа запускается от имени администратора?
UAC отключен?

3 раза да, ведь значение вносится в файл хост. Только на Севене оно вносится некоректно. А на хп все нормально. То ли строки он не те считывает.
 

beliy

Продвинутый
Сообщения
372
Репутация
72
2 prokazzza

насколько я понял скрипт записывает в файл host собственный ip? Если да, то не проще было бы использовать ip 127.0.0.1?
когдато писал для себя подобное - вот фрагмент кода, данные для записи у меня брались с файла hostedit.lst (одобно что не приходится перекомпилировать скрипт для правки записей)
Данный скрипт срабатывал на всех осях
Код:
#include <File.au3>
#RequireAdmin
#NoTrayIcon

$hostspath=@WindowsDir & '\System32\drivers\etc\hosts'
$hostedit=@ScriptDir & '\hostedit.lst'
$line=''
$hostlist=''

if not FileExists(@ScriptDir & '\hostedit.lst') Then
    MsgBox(0,@ScriptName,'Файл "' & @ScriptDir & '\hostedit.lst" не найден!' & @CRLF & 'Пожалуйста создайте его в папке с програмой!!!')
    Exit
Else
	$hostlist=FileOpen($hostedit, 0)
	$line=FileRead($hostlist)
EndIf

$file = FileOpen($hostspath, 1)

; Проверка на возможность открыть файл
If $file = -1 Then
    MsgBox(0, "Ошибка", "Невозможно открыть файл" & $hostspath )
    Exit
EndIf

FileWrite($file, @CRLF & $line)

FileClose($file)
FileClose($file)

MsgBox(64, "Патчинг hosts", "Файл " & $hostspath & @CRLF & 'успешно изменен')

Exit
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Версия: AutoIT v3.3.8.0
OS: WinXp SP3 (ENG)

[?]
А на хп все нормально.
У меня в Вашем скрипте:
Код:
ConsoleWrite($IP&@CRLF)

Error
>Exit code: 0 Time: 0.519
Лично у меня то понятно почему:
Код:
$lookfor = "IP-адрес"

Может быть у Вас там в Win7 тоже такую строчку найти не может ???

И еще вопрос не проще ли использовать справку:
@IPAddress1 IP address of first network adapter. Tends to return 127.0.0.1 on some computers.
@IPAddress2 IP address of second network adapter. Returns 0.0.0.0 if not applicable.
@IPAddress3 IP address of third network adapter. Returns 0.0.0.0 if not applicable.
@IPAddress4 IP address of fourth network adapter. Returns 0.0.0.0 if not applicable.
Код:
#include <File.au3>

ConsoleWrite(@IPAddress1&@CRLF)
ConsoleWrite(@IPAddress2&@CRLF)
ConsoleWrite(@IPAddress3&@CRLF)
ConsoleWrite(@IPAddress4&@CRLF)
;~     _FileWriteToLine(@SystemDir& "\drivers\etc\hosts", 20, @IPAddress1 & '   server.net', 1)
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
1.Нужно установить задержку
Код:
$cmd = Run(@ComSpec & " /c " & 'ipconfig /all', "", @SW_HIDE, 2+4)
sleep(500);тут
    While 1

иначе не успевает ;D

2. проблемы с кодировкой, точно канешно не знаю но у меня вот такой бред ;D
Код:
Ќ бва®©Є  Їа®в®Є®«  IP ¤«п Windows

   €¬п Є®¬ЇмовҐа   . . . . . . . . . : WINSTAN-ЏЉ
   Ћб­®ў­®© DNS-бгддЁЄб  . . . . . . : 
   ’ЁЇ г§« . . . . . . . . . . . . . : ѓЁЎаЁ¤­л©
   IP-¬ аиагвЁ§ жЁп ўЄ«о祭  . . . . : ЌҐв
   WINS-Їа®ЄбЁ ўЄ«о祭 . . . . . . . : ЌҐв

Ђ¤ ЇвҐа PPP MegaFon Internet:

   DNS-бгддЁЄб Ї®¤Є«о祭Ёп . . . . . : 
   ЋЇЁб ­ЁҐ. . . . . . . . . . . . . : MegaFon Internet
   ”Ё§ЁзҐбЄЁ©  ¤аҐб. . . . . . . . . : 
   DHCP ўЄ«о祭. . . . . . . . . . . : ЌҐв
   Ђўв®­ бва®©Є  ўЄ«о祭 . . . . . . : „ 
   IPv4- ¤аҐб. . . . . . . . . . . . : 10.21.93.32(Ћб­®ў­®©) 
   Њ бЄ  Ї®¤бҐвЁ . . . . . . . . . . : 255.255.255.255
   Ћб­®ў­®© и«о§. . . . . . . . . : 0.0.0.0
   DNS-бҐаўҐал. . . . . . . . . . . : 10.163.182.11
                                       10.163.182.10
   Ћб­®ў­®© WINS-бҐаўҐа. . . . . . . : 10.11.12.13
   „®Ї®«­ЁвҐ«м­л© WINS-бҐаўҐа. . . . . . : 10.11.12.14
   NetBios зҐаҐ§ TCP/IP. . . . . . . . : ЋвЄ«о祭


Добавлено:
Сообщение автоматически объединено:

и $lookfor = "IP-адрес" нужно скорректировать для Win7
т.к. такой фразы в тексте нет то и из цикла финкция не выйдит
Код:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\WINSTAN>ipconfig /all

Настройка протокола IP для Windows

   Имя компьютера  . . . . . . . . . : WINSTAN-ПК
   Основной DNS-суффикс  . . . . . . :
   Тип узла. . . . . . . . . . . . . : Гибридный
   IP-маршрутизация включена . . . . : Нет
   WINS-прокси включен . . . . . . . : Нет

Адаптер PPP MegaFon Internet:

   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : MegaFon Internet
   Физический адрес. . . . . . . . . :
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да
   IPv4-адрес. . . . . . . . . . . . : 10.21.93.32(Основной)
   Маска подсети . . . . . . . . . . : 255.255.255.255
   Основной шлюз. . . . . . . . . : 0.0.0.0
   DNS-серверы. . . . . . . . . . . : 10.163.182.11
                                       10.163.182.10
   Основной WINS-сервер. . . . . . . : 10.11.12.13
   Дополнительный WINS-сервер. . . . . . : 10.11.12.14
   NetBios через TCP/IP. . . . . . . . : Отключен

C:\Users\WINSTAN>
 
Верх