¿cómo cambiaría un programa en el programa C++/C/C# el contenido de los archivos hosts en Windows? Sé que esto suena como phishing, sinceramente no.¿Cómo cambio el archivo de hosts en un programa de Windows?
Respuesta
El archivo de hosts es simplemente texto sin formato. El formato en el que cada línea contiene la IP y el nombre de host que debería resolver la IP, separados por espacios en blanco. #
denota un comentario.
Ejemplo:
# This is a comment-
127.0.0.1 mysuperhost.com
El archivo se encuentra aquí: C:\Windows\system32\drivers\etc\hosts
. Deberá (con una buena razón) necesitar privilegios de administrador para escribir en él.
El archivo generalmente se encuentra en C:\Windows\System32\drivers\etc\hosts
. Sin embargo, en lugar de codificar la parte C:\Windows
, debe usar Environment.GetEnvironmentVariable("SystemRoot")
para determinar de forma segura el directorio raíz del sistema.
De lo contrario, puede escribir en él como cualquier otro archivo, suponiendo que tenga los permisos adecuados.
archivo hosts tiene un formato muy sencillo en el que cada línea puede contener registros "anfitrión" ip
Todo lo que necesita es anexar archivo normal:
using (StreamWriter w = File.AppendText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers/etc/hosts")))
{
w.WriteLine("123.123.123.123 FQDN");
}
Ten presente que por defecto que necesita privilegios elevados para escribir en el archivo de hosts ...
Para revertir, mejor hacer una copia de seguridad del archivo y restaurarlo una vez que haya terminado.
¿Cómo eliminar entradas cuando sea necesario? – Volatil3
En primer lugar, debe solicitar para el permiso administrativo del usuario. Puede hacer esto a través de su clase de Programa en su aplicación. El siguiente código solicitará al usuario acceso administrativo, luego el usuario tiene la opción de permitirlo o denegarlo. Si lo niegan, este ejemplo no ejecuta la aplicación.
Una vez que la aplicación se ejecuta en modo administrativo, es texto sin formato con formato simple. Ni siquiera necesita todos los comentarios de Microsoft incluidos en el archivo, y el simple análisis de cadenas le irá bien. Los comentarios de MSFT en el archivo HOSTS son toda la documentación que realmente necesita en lo que respecta al archivo HOSTS en sí.
namespace Setup {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Setup.Forms;
using System.Security.Principal;
using System.Diagnostics;
static class Program {
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool administrativeMode = principal.IsInRole(WindowsBuiltInRole.Administrator);
if (!administrativeMode) {
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Verb = "runas";
startInfo.FileName = Application.ExecutablePath;
try {
Process.Start(startInfo);
}
catch {
return;
}
return;
}
Application.Run(new ShellForm());
}
}
}
Tenga en cuenta que al copiar su código aquí se libera efectivamente en CC-Wiki. El bloque de derechos de autor no es efectivo.No estoy seguro de si desea eliminar el bloque de derechos de autor o la respuesta completa ... –
Soy propietario de DCOM Productions y acabo de copiar todo el contenido del archivo para obtener una respuesta rápida. De cualquier manera, no importa, solo usarlo para darle un enfoque a su pregunta. Si no quisiera que él use el código, no lo habría publicado en absoluto. ;) –
Bien. :) Simplemente no quería que, inadvertidamente, liberara su IP bajo una licencia menos restrictiva de lo que esperaba. –
La forma más precisa de encontrar la ubicación del archivo HOSTS es leer la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
registro, y añadiendo hosts
hasta el final.
Esto siempre apuntará a la ubicación correcta para la configuración actual de la máquina y funciona para todas las plataformas basadas en Windows NT desde Windows NT 4.0.
Lamentablemente esto no parece ser el caso con los sistemas operativos más modernos. Específicamente en Windows 7, si cambia el valor de DataBasePath, no usará la nueva ubicación. –
Si cambiar el valor lo afecta (o si Microsoft incluso admite hacerlo) no es un problema. La cuestión era cómo editar el archivo de hosts actual, simplemente di la forma más confiable de encontrar dicho archivo. (Suponiendo que no ha estado jugando en el registro.) Para el propósito indicado, este método es válido desde Windows NT 4.0 hasta Windows 8.1 Update 1 –
Como un chico que luchó con este problema, salida fácil, copie el archivo de hosts a la carpeta temporal, modifíquelo y cópielo de nuevo con la sobrescritura. Ejecutar la aplicación como administrador, será lo mejor.
... Esta respuesta es como ir a un foro de reparación de automóviles y diciéndole al OP, "La salida más fácil es comenzar a caminar a sus destinos en lugar de arreglar su automóvil". – Shadoninja
- 1. Cómo configurar el archivo de hosts específicos del usuario en Windows
- 2. Conectando mi programa con el evento de cambio de nombre de Windows Explorer
- 3. System.Net.WebRequest no respeta el archivo hosts
- 4. ¿Cómo cambio al usuario administrador en emacs en Windows?
- 5. ¿Puedo utilizar el archivo/etc/hosts para configurar un alias
- 6. Editando el archivo de hosts de iPhone Simulator
- 7. ¿Editando el archivo de hosts para redirigir la URL?
- 8. Deshabilitar el cambio de tamaño de un formulario de Windows
- 9. texto Abrir archivo y programa de acceso directo en el archivo por lotes de Windows
- 10. Mac OS X ignorando el archivo de hosts
- 11. ¿La mejor manera de determinar si un nombre de dominio sería válido en un archivo "hosts"?
- 12. Cómo obtener el estado de salida de un programa Java en el archivo por lotes de Windows
- 13. ¿Cómo se edita el archivo de hosts a través de CMD?
- 14. Cómo abrir un archivo en Windows sin bloquear su cambio de nombre
- 15. ¿Cómo convierto un programa Python a un programa Runnable .exe de Windows?
- 16. Cambio Tomcat en Windows
- 17. ¿Cómo se puede abrir un archivo con el programa asociado a su extensión de archivo?
- 18. ¿Cómo cambio el nombre (no muevo) un archivo en JDK7?
- 19. ¿Cómo ejecutar un programa desde el descriptor de archivo?
- 20. ¿Cómo mostrar un archivo de imagen en constante cambio en un navegador sin actualizar el parpadeo?
- 21. Anotación de eventos en un programa de servicio de Windows
- 22. Ejecutar el cambio automático de pantallas conectadas en Windows 8
- 23. Ejecutar otro programa en el archivo bat de Windows y no crear el proceso secundario
- 24. Mirar un archivo para el cambio
- 25. JQuery detección Evento de cambio de programa
- 26. ¿Cómo se ejecuta un programa externo en node.js en Windows?
- 27. ¿Cómo persistir los cambios en un archivo .settings/.config en un cambio de versión de archivo?
- 28. ¿Cómo puedo comprobar el tamaño de un archivo en un archivo por lotes de Windows?
- 29. Ruta al archivo actual depende de cómo ejecutar el programa
- 30. Wamp Server: varios hosts virtuales no funcionan en Windows
¿Qué significa "Su compromiso"? Además ... ¿por qué querrías hacer eso? –
En inglés, por favor? – Jon
no desea hacer eso, lea sobre el uso de DNS para resolver nombres de host – Alex