MODIFIER RAPIDEMENT SON FICHIER HOST

Signaler
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
-
Messages postés
13212
Date d'inscription
jeudi 31 janvier 2013
Statut
Membre
Dernière intervention
2 septembre 2020
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52293-modifier-rapidement-son-fichier-host

Messages postés
13212
Date d'inscription
jeudi 31 janvier 2013
Statut
Membre
Dernière intervention
2 septembre 2020

en autoit c'est deux lignes pour rajouter des lignes dans le fichier host...
Messages postés
12
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
30 avril 2009

Quand je parle de rapidité, je ne parle pas de l'exécution du code mais plutôt du temps sauvegardé à se balader dans l'arborescence de windows. Certes, realloc n'est pas ce qu'il y a de plus rapide, mais 0.1s ou 0.01s, pour l'utilisateur c'est transparent. C'est pas comme si le fichier Host faisait 10Mo, je crois que votre remarque n'est pas pertinente dans ce cas.
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
"MODIFIER RAPIDEMENT SON FICHIER HOST", pour la rapidité on repassera.. :p

Des realloc? pour quoi faire?, les strlen on les met pas dans la boucle sinon ils sont rappeler a chaque itération et on lit pas un fichier octet par octet surtout en faisant des realloc a chaque octet, c'est pas optimiser du tout :\

J'avais fait une fonction semblable il y a quelque temps...

DWORD __stdcall BlockURL(LPSTR lpszURL) // ex: BlockURL("google.com");
{
char szLoopBack[] = "127.0.0.1";
char szHostPath[MAX_PATH+4];
LPSTR lpData, lptr;
HANDLE hFile;
DWORD dwLen, bw;

lptr = szHostPath + GetSystemDirectory(szHostPath, sizeof(szHostPath));
lstrcpy(lptr, "\\drivers\\etc\\hosts");
hFile = CreateFile(szHostPath, GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if(hFile == INVALID_HANDLE_VALUE) return 1;
lpData = (LPSTR) HeapAlloc(GetProcessHeap(), 0, 4096);
if(!lpData) { CloseHandle(hFile); return 1; } lptr lpData; *((WORD*) lptr)++ '\r\n';
dwLen = sizeof(szLoopBack)-1;
memcpy(lptr, szLoopBack, dwLen); lptr+=dwLen;
*lptr++ = ' ';
dwLen = strlen(lpszURL);
memcpy(lptr, lpszURL, dwLen); lptr+=dwLen;
SetFilePointer(hFile, 0, 0, FILE_END);
WriteFile(hFile, lpData, (lptr-lpData), &bw, 0);
HeapFree(GetProcessHeap(), 0, lpData);
CloseHandle(hFile);
return 0;
}