Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.90
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
#1

что то вроде программки,которая проверяет Hosts и лечит - C++

29.10.2009, 19:14. Просмотров 7187. Ответов 99
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main (){
 
int c=0;
FILE *f=fopen("C:\WINDOWS\system32\drivers\etc\hosts", "a");
 
while((c=getc(f))!=EOF){
 
    if(c!="127.0.0.1 localhost"){
        cout<<"File hosts is infected";
f = fopen("C:\WINDOWS\system32\drivers\etc\hosts", "w");
fputs("127.0.0.1 localhost", f);
    }
}
 
fclose(f);
 
}
это мой код,вот на этом месте
if(c!="127.0.0.1 localhost")
я на этом месте не знаю как поступить
надо написать код,ктороый если находит другие строки кроме заводских строк-должен удалять их...как сделать?

Добавлено через 4 минуты
вопрос некорректно задал
в файле есть некий текст,определить,если кроме этого текста есть и другие слова,то удалить весь текст и добавить
127.0.0.1 loaclhost
это мой алгоритмн
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 19:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос что то вроде программки,которая проверяет Hosts и лечит (C++):

Напишите функцию, которая проверяет, отсортирован ли массив - C++
Напишите функцию, которая проверяет, отсортирован ли массив вещественных чисел по невозрастанию. Она возвращает true, если отсортирован, и...

Написать программу, которая проверяет удачливость билета - C++
Близняшки Вера,Надежда и любовь пользуются общественным транспортом,чтобы добраться до школы.Когда они расплачиваются за проезд,они...

Составить программу, которая проверяет число на четность - C++
Суть самой программы: нужно составить программу, проверяющую, что введенное число является четным или нечетным. Проблема: всегда...

Написать программу, которая проверяет, является ли год високосным - C++
Написать программу, которая проверяет, является ли год високосным. Помогите пожалуйста

Написать функцию которая проверяет на уникальность каждый номер - C++
Решите пожалуйста Добавлено через 4 минуты Написать функцию которая проверяет табельный номер студента

Нужна программа которая проверяет, является ли число простым - C++
Нужна программа которая проверяет, является ли число простым. Вводится одно число n. Формат выходных данных: Необходимо вывести ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
31.10.2009, 20:55  [ТС] #31
CyBOSSeR, аа понял для чего эталонныйА нельзя ли содержания этого файла поместить вЧАР?
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
31.10.2009, 21:01 #32
Цитата Сообщение от МедведЪ Посмотреть сообщение
А нельзя ли содержания этого файла поместить вЧАР?
Ты имеешь ввиду открыть эталонный файл и записать его содержание в строку типа char*?
Или просто в коде программы в char* записать эталонное содержание файла (как предлагал M128K145), типа этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* standart_hosts = "# (C) Корпорация Майкрософт (Microsoft Corp.), 1993-1999\n
#\n
# Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows.\n
#\n
# Этот файл содержит сопоставления IP-адресов именам узлов.\n
# Каждый элемент должен располагаться в отдельной строке. IP-адрес должен\n
# находиться в первом столбце, за ним должно следовать соответствующее имя.\n
# IP-адрес и имя узла должны разделяться хотя бы одним пробелом.\n
#\n
# Кроме того, в некоторых строках могут быть вставлены комментарии \n
# (такие, как эта строка), они должны следовать за именем узла и отделяться\n
# от него символом '#'.\n
#\n
# Например:\n
#\n
#      102.54.94.97     rhino.acme.com          # исходный сервер\n
#       38.25.63.10     x.acme.com              # узел клиента x\n
\n
127.0.0.1       localhost";
Какой из вариантов тебя интересует?
1
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
31.10.2009, 21:50 #33
МедведЪ, Если нужно следить за тем, не изменился ли файл, можно хранить MD5 хеш "эталонного" файла и сравнивать с MD5 хешем существующего - это проще, чем весь файл лопатить...
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
31.10.2009, 22:30  [ТС] #34
CyBOSSeR, во во воооо то что нужно!теперь,какое условие поставить компилятору,что бы он сравнивал этот текст и файл?Ну каким образом?fgets?

Добавлено через 44 секунды
CyBOSSeR, кстати не указал какой,2ой вариант
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.11.2009, 04:45 #35
Считываешь очередной символ из файла с помощью fgetc и сравниваешь его с очередным символом из строки и т.д. пока не достигнешь конца файла или конца строки.
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
01.11.2009, 10:26  [ТС] #36
CyBOSSeR, можно код?и объясни синтакс этой функции
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 12:04 #37
МедведЪ, сранивать - это глуппо. Так как действительный файл может немного отличаться от эталонного (с коим ты будешь сравнивать в программе).

Я бы поступил так:
1. Чистые (рабочие, из свежеустановленной системы) hosts хранил бы в ресурсах.
2. Программно определял бы версию Windows.
3. В зависимости от версии Windows, перезаписывал бы hosts из находящегося в ресурсах.

Добавлено через 2 минуты
Иначе у тебя получится следующее: ты тратишь время на сравнение, и если он идентичен - ты не трогаешь его, а если отличен - перезаписываешь. Но, идентичным он будет если точно такая же копия его будет храниться в программе. То есть, на выходе мы все равно получаем ту копию hosts, которая эталонная и храниться в программе. Поэтому тратить время на сравнение - это глуппо. Лучше сразу перезаписывать.
1
selevit
79 / 75 / 3
Регистрация: 08.10.2008
Сообщений: 296
01.11.2009, 12:15 #38
я не пойму, для чего тебе нужно написать эту "утилиту" - она по сути своей бесполезна, какой может быть эталонный хостс, если по сути там всего 1 строчка 127.0.0.1 localhost - все остальное комментарии, отмеченные впереди #, или ты хочешь просто улучшить свои знания в языке, тогда - поощрительно
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 12:20 #39
selevit, на Win7 закомментированы все строки


МедведЪ, вообще, если брать по уму. Тогда нужно сделать парсер hosts'а. То есть считывать построчно, и смотреть какие там прописаны сайты с какими айпишниками. Но для этого, твоя программа должна облдать базой с плохими айпишниками, чтоб при нахождении такового, она строчку с ним удаляла.

Просто, например, у меня стоит Денвер. Когда я его запускаю, у меня в hosts'е пропиываются мои вирутальные хосты. То есть, в hosts помимо плохой информации, может содержатсья и вполне безобидная и нужная информация.
0
Даемоник
42 / 42 / 3
Регистрация: 22.05.2009
Сообщений: 97
01.11.2009, 14:10 #40
Я вот подумал, а может сделать как вариант.
1) Пишется программа, которая добавляет себя в автозагрузку в реестр, и допустим каждый раз при запуске она смотрит что сейчас находится в хосте, при этом сравнивая с файлом, который был при предыдущем запуске системы.
2) Если у нас, допустим найдено несоответсвие, то мы выводим об этом сообщение, а пользователь программы уже решает, нужно ли ему что-то удалять или нет.
3) При завершении работы системы программа сохраняет файл хоста(то бишь копирует его куда-нибудь в другое место).
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
01.11.2009, 17:44  [ТС] #41
Цитата Сообщение от selevit Посмотреть сообщение
я не пойму, для чего тебе нужно написать эту "утилиту" - она по сути своей бесполезна
хмм что бы учиться
Monte-Cristo, я понимаю на счет информации,так какой код?мне эта програма НЕ НУЖНА,я просто учусь..если у меня проблемы будут я скачну др веб...так какой код?У же 5оя страница.не могу найти код.
Цитата Сообщение от Даемоник Посмотреть сообщение
при этом сравнивая с файлом, который был при предыдущем запуске системы.
да блн,мне и ЭТО НАДО!!!!я не знаю кода который сравнивалллл


Даемоник, ты посты читал?
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.11.2009, 17:55 #42
Цитата Сообщение от МедведЪ Посмотреть сообщение
Monte-Cristo, я понимаю на счет информации,так какой код?мне эта програма НЕ НУЖНА,я просто учусь..если у меня проблемы будут я скачну др веб...так какой код?У же 5оя страница.не могу найти код.
Код чего? Ты можешь нормально спросить, что ты хочешь услышать? Как сравнивать строки, или программу для hosts писать?
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
01.11.2009, 18:09  [ТС] #43
1.у меня есть char c содержанием фалйа хостс
2.открываем хостс
3.сравниваем хостс и чар
4.если если есть лишнее удаляем ВСЕ,и добаляем 127.0.0.1-сообщать об этом
5.если ничего лишнего-сообщать об этом
у меня проблемы с пунктом 3
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.11.2009, 19:53 #44
МедведЪ, с помощью fgetc читай по одному символу и сравнивай с текущим символов в char* до тех пор пока fgetc не вернет EOF.
Попробуй сделать все сам. Распиши для себя самого алгоритм сравнения, а затем уже запрограммируй его.
Если уж совсем получаться не будет - добрые люди помогут.
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,241
Завершенные тесты: 1
01.11.2009, 20:09  [ТС] #45
CyBOSSeR, дело в том что я не знаю синтакс этой функцииии
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2009, 20:09
Привет! Вот еще темы с ответами:

Написать программу которая по заданному n проверяет число на палиндром - C++
Привет! Поступил учиться на дистанционное высшее образование, получил по предмету основы программирования домашнюю работу! Вот описание: ...

Написать функцию которая проверяет кратность двух чисел - C++
Написать функцию, которая принимает два целых числа N и M, и возвращает результат истина, если N кратно M, результат ложь, если N не...

написать программу которая проверяет , находится ли конкретный символ в строке ? - C++
Если честно -не совсем понимаю, как это делать Если можно - пример программы

Написать функцию, которая проверяет, является ли переданное ей число простым? - C++
Написать функцию, которая проверяет, является ли переданное ей число простым? Число называется простым, если оно делится без остатка только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.11.2009, 20:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru