miércoles, 18 de febrero de 2009

Cómo quitar datos en Active Directory después de una degradación sin éxito de un controlador de dominio.

(Informacion extra en: http://support.microsoft.com/?id=216498)

Procedimiento 2: Windows 2000 (todas las versiones) y Windows Server 2003 RTM

  1. Haga clic en Inicio, seleccione Programas y Accesorios y, a continuación, haga clic en Símbolo del sistema.
  2. En el símbolo del sistema, escriba ntdsutil y presione ENTRAR.
  3. Escriba metadata cleanup y presione ENTRAR. Según las opciones dadas, el administrador puede realizar la eliminación; pero para que ello sea posible se deben especificar parámetros de configuración adicionales.
  4. Escriba connections y presione ENTRAR. Este menú se usa para conectar con el servidor específico donde se producen los cambios. Si el usuario que ha iniciado sesión no tiene permisos administrativos, se pueden suministrar credenciales diferentes especificando las credenciales que hay que usar antes de realizar la conexión. Para ello, escriba set creds NombreDeDominioNombreDeUsuarioContraseña y presione ENTRAR. Para escribir una contraseña nula, escriba null en el parámetro correspondiente a la contraseña.
  5. Escriba connect to server nombreDeServidor y presione ENTRAR. Debe recibir la confirmación de que la conexión se ha establecido correctamente. Si se produce un error, compruebe que el controlador de dominio que se usa en la conexión está disponible y que las credenciales que ha suministrado tienen permisos administrativos en el servidor.

    Nota si intenta conectar con el mismo servidor que desea eliminar, cuando intente eliminar el servidor al que se hace referencia en el paso 15, puede aparecer un mensaje de error similar al siguiente:
    Error 2094. No se puede eliminar el objeto DSA
  6. Escriba quit y presione ENTRAR. Aparecerá el menú Metadata Cleanup.
  7. Escriba select operation target y presione ENTRAR.
  8. Escriba list domains y presione ENTRAR. Se mostrará una lista de dominios del bosque, cada uno con un número asociado.
  9. Escriba select domain número y presione ENTRAR, donde número es el número asociado al dominio del que es miembro el servidor que está quitando. El dominio que seleccione se usa para determinar si el servidor que se está quitando es el último controlador de dominio de ese dominio.
  10. Escriba list sites y presione ENTRAR. Se mostrará una lista de sitios, cada uno con un número asociado.
  11. Escriba select site número y presione ENTRAR, donde número es el número asociado al sitio del que es miembro el servidor que está quitando. Debe recibir una confirmación que enumere el sitio y el dominio que eligió.
  12. Escriba list servers in site y presione ENTRAR. Se mostrará una lista de los servidores del sitio, cada uno con un número asociado.
  13. Escriba select server número y presione ENTRAR, donde número es el número asociado al servidor que desea quitar. Aparecerá una confirmación donde se indica el servidor seleccionado, su nombre de host del Sistema de nombres de dominio (DNS) y la ubicación de la cuenta de equipo del servidor que desea quitar.
  14. Escriba quit y presione ENTRAR. Aparecerá el menú Metadata Cleanup.
  15. Escriba remove selected server y presione ENTRAR. Debe recibir la confirmación de que la eliminación se ha completado correctamente. Si aparece el mensaje de error siguiente:
    Error 8419 (0x20E3)
    No se encontró el objeto DSA
    el objeto de configuración NTDS puede haberse quitado ya de Active Directory porque lo haya quitado otro administrador o como consecuencia de la replicación de la eliminación con éxito del objeto después de ejecutar la utilidad Dcpromo.

    Nota: también puede ver este error cuando intenta enlazar con el controlador de dominio que se va a quitar. Ntdsutil tiene que enlazar con otro controlador de dominio distinto al que se va a quitar con la limpieza de metadatos.
  16. Escriba quit en cada menú para salir de la utilidad Ntdsutil. Debe aparecer la confirmación de que la desconexión se ha completado correctamente.
  17. Quite el registro cname de la zona _msdcs.dominio raíz del bosque en DNS. Suponiendo que el controlador de dominio (DC) se vaya a reinstalar y a volver a promover, se crea un nuevo objeto de configuración NTDS utilizando un nuevo GUID y un registro cname coincidente en DNS. Es mejor que los DC que existan no usen el registro cname antiguo.

    Es conveniente eliminar el nombre de host y otros registros DNS. Si se supera el tiempo de concesión que queda en la dirección del Protocolo de configuración dinámica de host (DHCP) asignada al servidor sin conexión, otro cliente puede obtener la dirección IP del DC problemático.
Ahora que se ha eliminado el objeto de configuración NTDS, puede eliminar la cuenta de equipo, el objeto miembro FRS, el registro cname (o Alias) del contenedor _msdcs, el registro A (o Host) en DNS, el objeto trustDomain para un dominio secundario eliminado y el controlador de dominio.

Nota: no necesita quitar manualmente el objeto miembro de FRS en Windows Server 2003 RTM porque la utilidad Ntdsutil.exe ya lo ha quitado al ejecutarla. Además, los metadatos de la cuenta de equipo no se pueden quitar si la cuenta de equipo del DC contiene otro objeto hoja. Por ejemplo, los Servicios de instalación remota (RIS) podrían estar instalados en el DC.

La utilidad Adsiedit se incluye con la funcionalidad Herramientas de soporte de Windows tanto en Windows 2000 Server como en Windows Server 2003. Para instalar Herramientas de soporte de Windows, siga estos pasos:
  • Windows 2000 Server: En el CD Windows 2000 Server, abra la carpeta Support\Tools, haga doble clic en Setup.exe y siga las instrucciones que aparecerán en la pantalla.
  • Windows Server 2003: En el CD Windows Server 2003, abra la carpeta Support\Tools, haga doble clic en Suptools.msi, haga clic en Instalar y siga los pasos del Asistente para configuración de herramientas de soporte de Windows para completar la instalación.
  1. Use ADSIEdit para eliminar la cuenta de equipo. Para ello, siga estos pasos:
    1. Haga clic en Inicio y en Ejecutar, escriba adsiedit.msc en el cuadro Abrir y haga clic en Aceptar.
    2. Expanda el contenedor Domain NC.
    3. Expanda DC=Su nombre de dominio, DC=COM, PRI, LOCAL, NET.
    4. Expanda OU=Domain Controllers.
    5. Haga clic con el botón secundario del mouse en CN=nombreDeControladorDeDominio y, a continuación, haga clic en Eliminar.
    Si aparece el mensaje de error "No se puede eliminar el objeto DSA" cuando intenta eliminar el objeto, cambie el valor de UserAccountControl. Para cambiar el valor de UserAccountControl, haga clic con el botón secundario del mouse en el controlador de dominio en ADSIEdit y, después, haga clic en Properties. En Select a property to view, haga clic en UserAccountControl. Haga clic en Clear, cambie el valor a 4096 y haga clic en Set. Ya puede eliminar el objeto.

    Nota: el objeto de suscriptor FRS se elimina cuando se elimina el objeto de equipo porque es un objeto secundario de la cuenta de equipo.
  2. Use ADSIEdit para eliminar el objeto miembro FRS. Para ello, siga estos pasos:
    1. Haga clic en Inicio y en Ejecutar, escriba adsiedit.msc en el cuadro Abrir y haga clic en Aceptar.
    2. Expanda el contenedor Domain NC.
    3. Expanda DC=Su dominio, DC=COM, PRI, LOCAL, NET.
    4. Expanda CN=System.
    5. Expanda CN=File Replication Service.
    6. Expanda CN=Domain System Volume (SYSVOL share).
    7. Haga clic con el botón secundario del mouse en el controlador de dominio que está quitando y, a continuación, haga clic en Eliminar.
  3. En la consola DNS, use el complemento DNS de MMC para eliminar el registro A en DNS. El registro A también se conoce como registro Host. Para eliminar el registro A, haga clic con el botón secundario del mouse en él y, después, haga clic en Eliminar. Elimine también el registro cname (también conocido como Alias) en el contenedor _msdcs. Para ello, expanda el contenedor _msdcs, haga clic con el botón secundario del mouse en el registro cname y, después, haga clic en Eliminar.

    Importante: si éste era un servidor DNS, quite la referencia a este DC en la ficha Servidores de nombres. Para ello, en la consola DNS, haga clic con el botón secundario del mouse en el nombre de dominio en Zonas de búsqueda directa, haga clic en Propiedades y quite este servidor de la ficha Servidores de nombres.

    Nota: si tiene zonas de búsqueda inversa, quite también el servidor de esas zonas.
  4. Si el equipo eliminado era el último controlador de dominio de un dominio secundario y éste también se eliminó, use ADSIEdit para eliminar el objeto trustDomain del objeto secundario. Para ello, siga estos pasos:
    1. Haga clic en Inicio y en Ejecutar, escriba adsiedit.msc en el cuadro Abrir y haga clic en Aceptar.
    2. Expanda el contenedor Domain NC.
    3. Expanda DC=Su dominio, DC=COM, PRI, LOCAL, NET.
    4. Expanda CN=System.
    5. Haga clic con el botón secundario del mouse en el objeto Dominio de confianza y, a continuación, haga clic en Eliminar.
  5. Use Sitios y servicios de Active Directory para quitar el controlador de dominio. Para ello, siga estos pasos:
    1. Inicie Sitios y servicios de Active Directory.
    2. Expanda Sitios.
    3. Expanda el sitio del servidor. El sitio predeterminado es Nombre-predeterminado-primer-sitio.
    4. Expanda Servidor.
    5. Haga clic con el botón secundario del mouse en el controlador de dominio y, a continuación, haga clic en Eliminar.

Sintaxis opcional avanzada con la versión del SP1 de Ntdsutil.exe

El SP1 de Windows Server 2003 introdujo una nueva sintaxis que se puede utilizar. Con la nueva sintaxis, ya no es necesario enlazar al DS y seleccionar el destino de la operación. Para utilizar la nueva sintaxis, debe conocer u obtener el DN del objeto de configuración NTDS del servidor que se va a degradar. Para utilizar la nueva sintaxis para la limpieza de metadatos, siga estos pasos:
  1. Ejecute ntdsutil.
  2. Cambie el símbolo del sistema de la limpieza de metadatos.
  3. Ejecute el siguiente comando
    remove selected server
    A continuación se muestra un ejemplo de este comando.

    Nota: lo siguiente es una línea, pero se ha ajustado para mejorar la legibilidad.
    Remove selected server cn=servername,cn=servers,cn=sitename,cn=sites,cn=configuration,dc=
  4. Quite el registro cname de la zona _msdcs.dominio raíz del bosque en DNS. Suponiendo que el controlador de dominio (DC) se vaya a reinstalar y a volver a promover, se crea un nuevo objeto de configuración NTDS utilizando un nuevo GUID y un registro cname coincidente en DNS. Es mejor que los DC que existan no usen el registro cname antiguo.

    Es conveniente eliminar el nombre de host y otros registros DNS. Si se supera el tiempo de concesión que queda en la dirección del Protocolo de configuración dinámica de host (DHCP) asignada al servidor sin conexión, otro cliente puede obtener la dirección IP del DC problemático.
  5. Si el equipo eliminado era el último controlador de dominio de un dominio secundario y éste también se eliminó, use ADSIEdit para eliminar el objeto trustDomain del objeto secundario. Para ello, siga estos pasos:
    1. Haga clic en Inicio y en Ejecutar, escriba adsiedit.msc y haga clic en Aceptar.
    2. Expanda el contenedor Domain NC.
    3. Expanda DC=Su nombre de dominio, DC=COM, PRI, LOCAL, NET.
    4. Expanda CN=System.
    5. Haga clic con el botón secundario del mouse en el objeto Dominio de confianza y, a continuación, haga clic en Eliminar.
  6. Use Sitios y servicios de Active Directory para quitar el controlador de dominio. Para ello, siga estos pasos:
    1. Inicie Sitios y servicios de Active Directory.
    2. Expanda Sitios.
    3. Expanda el sitio del servidor. El sitio predeterminado es Nombre-predeterminado-primer-sitio.
    4. Expanda Servidor.
    5. Haga clic con el botón secundario del mouse en el controlador de dominio y, a continuación, haga clic en Eliminar.

viernes, 13 de febrero de 2009

Crear un servicio en Windows a partir de un programa

… o la eterna cuestión de: ¿Cómo hago que un programa se ejecute siempre sin necesidad de arrancar un perfil? -> metiéndolo como un servicio.. y por ende… ¿cómo creo un servicio de Windows con mi programita?... esta es la respuesta ^_^

Para crear un servicio con un ejecutable lo puedes hacer con herramientas de Microsoft o con herramientas de terceros.
Con herramientas de Microsoft
Se necesitan dos programas del Kit de recursos, instsrv.exe y srvany.exe; se lanza desde un cmd la línea:
instsrv.exe "Nombre del Servicio" srvany.exe
Es imprescindible pasar el path donde esten ambos ejecutables.
Una vez hecho esto, se abre regedit y en HKLM\system\CurrentControlSet\Services verás que se ha creado una clave(useasé carpeta) "Nombre del Servicio"(si abres la consola de servicios verás que ya se ve en la lista); pinchas en el árbol en ella y creas una subclave(useasé carpeta) llamada "Parameters", dentro de ella un valor de cadena llamado "Application" al que de contenido le pones Ruta\Nombre.exe. Ya tienes creado el servicio. De esta manera se crea con arranque automático y lanzado por cuenta del sistema; te metes en servicios y cambias lo que haga falta(se puede hacer desde línea de comandos con "sc.exe").
Ten en cuenta que el programa debe recibir las rutas absolutas de donde deba acceder, ya que al arrancarse como servicio digamos que "desconoce" en qué ruta se encuentra su propio ejecutable, con lo que no sabe manejar rutas relativas. Esto es así porque no se crea un servicio con el ejecutable en realidad, si no que se crea con srvany como el ejecutable del servicio y el ejecutable que queremos lanzar como parámetro (quizás si ubicamos una copia de srvany en la misma carpeta en la que está el ejecutable funciona, pero dependerá del ejecutable en sí)
Otra posibilidad, que a lo mejor te puede valer y es más simple, es lanzar la aplicación en un script de inicio del equipo; se abre el editor de políticas del sistema (gpedit.msc) y se especifica en "Configuración de equipo\Configuración de Windows\Archivos de comandos (inicio/apagado)". De esta forma se ejecutará, si bien no será un servicio.
Por último, puedes editar el registro para que se lance desde la clave "HKLM\Software\Microsoft\Windows\CurrentVersion\Run", creando un valor de tipo string (REG_SZ) al que llames como te parezca y que contenga la llamada al ejecutable. De esta forma se ejecutará, si bien no será un servicio.
---------------============================================---------------
Hay otro vínculo de Microsoft: http://support.microsoft.com/kb/251192/es que probablemente sea más preciso pero al mismo tiempo hará falta estudiárselo más.
---------------============================================---------------

Con herramientas de terceros
Existen herramientas de terceros que te permiten lanzar aplicaciones como servicios. Aquí pongo enlaces a cuatro de ellas:
Firedaemon
http://www.firedaemon.com/
Application as service 1.0
http://www.eltima.com/products/application-as-service/
Service Mill
http://www.activeplus.com/us/products/smill/
Serve All
http://www.transsoft.com/view_content.asp?ID=25

La grabadora no graba

Problema extrañísimo: la grabadora funciona (se puede grabar desde el Nero y tal) pero cuando metes un DVD virgen y desde el explorador de Windows intentas hacer doble click sobre ella, en lugar de abrírtela para que puedas añadir archivos te sale un error de Windows que pone "Función no Válida" o algo así.

Búsqueda en Google y lo que me sale es esto:

http://support.microsoft.com/kb/316529/es

La solución es sencilla, pero hay que saberla. Básicamente se reduce a editar el registro de Windows y en la entrada:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CD
Burning\Drives

seleccionar la clave correspondiente a la grabadora y ponerle como valor un "2", que le indica a Windows que es una unidad CD-RW ("1" es unidad CD-R y "3" lector). Debe ser uno de las pocas cosas que Windows cambia "en tiempo real", ya que si tienes abierto Mi PC y sacas las propiedades de la grabadora verás que ya aparece la pestaña de grabación, sin necesidad de reiniciar.

Haciendo esto el problema se solucionó, y ya permitió arrastrar archivos y grabarlos directamente.

Todo esto nos enseña dos cosas:

1. El registro de Windows es un invento del demonio 2. El Nero accede directamente al hardware, el cabrito