MODIFIER RAPIDEMENT SON FICHIER HOST

Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 12 oct. 2010 à 14:47
g3n-h@ckm@n Messages postés 13238 Date d'inscription jeudi 31 janvier 2013 Statut Membre Dernière intervention 24 février 2022 - 3 août 2013 à 21:12
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

g3n-h@ckm@n Messages postés 13238 Date d'inscription jeudi 31 janvier 2013 Statut Membre Dernière intervention 24 février 2022
3 août 2013 à 21:12
en autoit c'est deux lignes pour rajouter des lignes dans le fichier host...
sholvaC Messages postés 12 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 30 avril 2009
19 oct. 2010 à 06:13
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.
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
12 oct. 2010 à 14:47
"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;
}
Rejoignez-nous