Setting up de IT department from scratch – Obteniendo recursos financieros


El presente post, viene a raíz de que muchas veces me preguntan cuanto presupuesto manejo en el Departamento de Sistemas. Y cada vez que les comento que el presupuesto es prácticamente como para mantener insumos, no me pueden creer. Mas aún cuando se enteran de que armamos el departamento de sistemas desde cero… practicamente sin presupuesto.

Esta es la historia:

Resulta, que en el año 2003 me llamaron de la empresa donde trabajo actualmente para un desafío muy importante para mi carrera: Desarrollar el departamento de sistemas desde cero. No había practicamente nada en la empresa, solo un viejo IBM 36 que en la década del 80 había sido la vedette del lugar y un par de PCs sin conexión a la red.

Así que bueno… había que hacer de todo: diseñar las redes, implantar un ERP, armar la estructura de servidores y sus plataformas, etc, etc, etc. Interesante, no?
Cantidad estimada de puestos de trabajo: 50
Para hacerla mas interesante, se adicionaban las siguientes variables: el presupuesto era escaso: Se podría comprar el ERP y algunas PCs.
Demasiado escaso: Faltaban al menos los recursos financieros para comprar los servidores, licencias, armar las redes, etc, etc, etc.

Como haríamos eso?

La solución que  aplicamos para obtener los recursos financieros necesarios para desarrollar la estructura que requeríamos fué armar proyectos tecnológicos para obtener crédito fiscal y subsidios otorgados por entidades gubernamentales.

El gobierno Argentino, otorga subsidios y crédito fiscal, en distintas modalidades a los proyectos que demuestren un cierto grado de innovación tecnológica.

Es así que presentamos varios proyectos, entre ellos el denominado “Punto de Venta POS bajo Linux”, siendo uno de los primeros sistemas privados de punto de venta con impresoras fiscales que se desarrolló por completo bajo linux y se implementó en Argentina.
Otro de los proyectos fué el de “Trazabilidad del Frío”, sistema que realiza un mapeo de los productos supercongelados desde la salida de fábrica hasta el puno de venta.

De esta manera, obtener recursos financieros, resulta posible si se encuentra la manera de armar algún proyecto lo suficientemente atractivo como para que sea aprobado y aprovechar asi sus beneficios.

Gracias Nestor por su carismático couching en el uso de estas estrategias.

Algunas de las entidades que gestionan estos proyectos en nuestro país son:
http://www.agencia.gov.ar/     (Nación)
http://www.cic.gba.gov.ar/     (Provincia de Bs. As.)

El departamento de Sistemas antes:

May19050

y después:

DSC02137

SCAN_ENABLE exception on MC1000 Barcode Scanner


Este bug está reportado para algunos equipos Motorola / Symbol MC1000 con Windows CE 4.2.

El problema es que luego de una determinada cantidad de lecturas el laser se deshabilita hasta que se haga un warm boot del equipo. El error informado es SCAN_ENABLE exception, perteneciente a las librerías precompiladas de Symbol.

La solución viene de la mano de un patch:MC100_SCANNER_FIX_4.2 que hay que descargar en la carpeta Platform del dispositivo y luego realizar un cold boot del terminal.

 

Acceso denegado en Windows XP


Si tenemos acceso denegado al acceder a ciertos archivos, especialmente luego de una reinstalación, seguimos los siguientes pasos:

1) Nos logueamos con una cuenta con permisos de administrador.

2) Vamos al Panel de Control –> Apariencia y Temas –> Opciones de Carpeta –> Ver y desmarcamos “Utilizar uso compartido simple de archivos (recomendado)”

3) Luego hacemos click con el boton derecho del mouse sobre la carpeta con problemas de permisos –> Propiedades –> Seguridad

Seguramente aparezca un mensaje advirtiendo de los problemas de seguridad de dicha carpeta.

4) Allí mismo vamos a  Avanzadas –> Propietario –> Nombre y seleccionamos nuestro nombre de usuario. A continuación tildamos “Reemplazar propietario en subcontenedores y objetos”.

5) Aplicamos todo y aceptamos todo.

Listo

 

Migrar Servidores a Linux


La migración de sistemas de plataformas Windows a plataformas Linux surge de la necesidad lisa y llana de abaratar costos. Este es un resumen (muy resumido) de mis experiencias:

Escenario: Tenía una serie de servidores Windows, en su mayoría W2003R2, brindando los siguientes servicios:
– File Server, Mail Server, Proxy, Antivirus, Active Directory, Sql Server.

La cuestión es que de a poco y con paciencia es posible migrarlos a todos…, o casi todos a Linux.

– El Active Directory + el File Server se puede configurar directamente en un Linux con Samba + Ldap. El ldap (openldap) nos va a dar la funcionalidad de autenticación de usuarios mientras que el samba nos va a brindar los recursos compartidos necesarios para trabajar con archivos en la red.

– Con Squid reemplazamos cualquier proxy.

– Respecto del servidor de mail, he sido bastante masoquista al respecto (eso dicen ja, ja). Me he dedicado a instalar un servidor QMail con listas RBL que para instalarlo, me ha llevado unas cuántas horas de “plática” con él.

– Respecto de la base de datos, la mejor manera de reemplazar el SQL server es migrando los datos y el código a Mysql o Postgres.
El tema es el siguiente: los datos son fáciles de migrar. Inclusive hay herramientas que realizan dicha taréa. Pero en mi caso, tengo cientos de Stored Procedures… éstos si o sí requieren un análisis y traducción de código que no he visto que realice ninguna herramienta, con lo cuál, en mi caso, el costo de migración es sumamente alto.
Otro tema a evaluar en el caso de la base de datos es la aplicación que hace uso de dicha base. Es posible migrar su enlace a la base?

– Respecto del antivirus, no he encontrado un reemplazo realmente eficiente para el Symantec Corporate Server. Este antivirus, trabaja una base de virus centralizada y hace un deploy a todos los clientes windows conectados.
Creo que la mejor solución para este reemplazo va a surgir cuando pueda reemplazar todos los clientes windows por clientes Linux !!!

scripts: qmail usage statistics


Aquí varios scripts utilizados para analizar el uso del servidor de correo qmail. Se pueden utilizar independientemente o el primero llamará al resto:

[root@test scripts]# cat chkStatus.sh 
#!/bin/bash
echo ""
echo ""
echo "Consultas de estado. Servidor Qmail"
echo "==================================="
echo ""
echo "TCP Server Hits:"
/root/scripts/chkTcpServerHits.sh $1|cut -c12-50
echo "RBL Hits:"
/root/scripts/chkRblHits.sh $1|cut -c12-50
echo "SPAM Hits:"
/root/scripts/chkSpamHits.sh $1|cut -c13-50
echo "Spam Deleted: "
/root/scripts/chkSpamHitsDeleted.sh $1|cut -c13-50
echo "Virus Hits:"
/root/scripts/chkVirusHits.sh $1|cut -c13-50
echo "Qtrap Hits:"
/root/scripts/chkQtrapHits.sh $1|cut -c12-50
echo "Failure:"
/root/scripts/chkFailure.sh $1|cut -c12-50
echo "Pop3 Hits:"
/root/scripts/chkPopHits.sh $1|cut -c12-50
echo "Send Local:"
/root/scripts/chkSendLocal.sh $1|cut -c12-50
echo "Send Remote:"
/root/scripts/chkSendRemote.sh $1|cut -c12-50
echo ""
echo "Estado de las colas: "
qmailctl queue
echo ""
echo "Uptime: "
uptime
echo ""

[root@test scripts]# cat chkTcpServerHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de tcpserver: pid de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-smtpd/*|grep "tcpserver: pid"| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkRblHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de rblsmtpd de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-smtpd/*|grep "rblsmtpd:"| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkSpamHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de SPAM de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%c --date=$1|cut -c5-15`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco para determinar la cantidad de lineas que lo contienen
cat /var/spool/qscan/qmail-queue.log|grep "smells like SPAM"|cut -c6-16| \
# busco la fecha
grep "$fecha" | \
# cuento numero de lineas
wc -l
# end
exit

[root@einstein scripts]# cat chkSpamHitsDeleted.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de SPAM eliminado de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%c --date=$1|cut -c5-15`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco para determinar la cantidad de lineas que lo contienen
cat /var/spool/qscan/qmail-queue.log|grep "deleting message..."|cut -c6-16| \
# busco la fecha
grep "$fecha" | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkVirusHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de virus de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%c --date=$1|cut -c5-15`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco para determinar la cantidad de lineas que lo contienen
cat /var/spool/qscan/qmail-queue.log|grep "there be a virus"|cut -c6-16| \
# busco la fecha
grep "$fecha" | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkQtrapHits.sh 
#!/bin/bash
# 20070418-hvivani-Obtiene total dets del qtrap  de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
fechaQtrap=`date +%m/%d/%y --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco en los logs para determinar la cantidad de lineas que lo contienen
cat /home/vpopmail/qtrap/logs/qtrap.log|grep "$fechaQtrap"|wc -l
# end
exit

[root@test scripts]# cat chkFailure.sh 
#!/bin/bash
# 20070418-hvivani-Obtiene total de failure de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-send/*|grep "failure: "| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkPopHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de tcpserver: pid de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-pop3d/*|grep "tcpserver: pid"| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkSendLocal.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de entregas locales de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-send/*|grep "to local "| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkSendRemote.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de entregas remotas de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-send/*|grep  "to remote "| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

SQL: Consulta de Inserción


Esta consulta es muy útil para volcar datos de una tabla y/o base a otra tabla y/o base. Su sintáxis es intuitiva, pero siempre queda alguna duda, así que aquí dejamos un ejemplo:

INSERT INTO base1.dbo.archivetitles
(title_id, title, type, pub_id)
SELECT title_id, title, type, pub_id
FROM base2.dbo.titles
WHERE (pub_id = ‘0766’)

Inserta los campos seleccionados de la tabla titles en la base2 a la tabla archivetitles en la base1.

Control de Potencia con PC


Siempre quise poder controlar cualquier dispositivo a través de una PC.
La manera mas sencilla es a través del puerto paralelo:Puerto Paralelo:

Los pines 2 al 9 son de salida.
los pines 10 al 13 son de entrada.

También denominado puerto de impresora ó LPT éste puerto dispone de tres
canales de comunicaciones cuyos pines envían señales desde y hacia la
computadora todos al mismo tiempo, de ahí el término paralelo.
Inicialmente la plataforma PC permite disponer de hasta un máximo de
tres puertos paralelos, usualmente denominados LPT1, LPT2 y LPT3.
Exceptuando las nuevas computadoras iMac de la firma Apple Computers
todas las computadoras personales disponen al menos de un puerto paralelo
al cual generalmente se lo llama LPT1. A comienzos de la computación
personal (cuando reinaban las XT) el puerto paralelo venía incluido
en la plaqueta controladora de vídeo. Luego, con la llegada de las
controladoras VGA el puerto comenzó a ser incorporado en las
controladoras de unidades de disco (mas conocidas como multifunción).
Pero con la quinta generación en PC (cuando apareció el Pentium de Intel)
cambió todo nuevamente quedando la placa multifunción incorporada a la
placa base del sistema o Motherboard.

Los terminales del puerto paralelo sólo pueden manejar señales digitales,
cuyos valores de tensión representan estados altos o bajos. Cuando no hay
tensión en el pin se asume un estado lógico bajo mientras que cuando hay
una tensión cercana a los 5v el estado asumido es el alto. Cada pin puede
drenar un máximo de 50mA, insuficiente para manejar cualquier tipo de
carga mediana o pesada. Pero es suficiente para encender un diodo LED.

Para controlar el estado de los pines del puerto paralelo basta con
escribir un número entero positivo de 8 bits en la dirección del mismo.
El pin de datos 0, que físicamente está conectado al terminal 2 del
contector, asume el peso 1. Este es el bit de menos peso en la palabra
de datos de dicho puerto. Siguiendo la tabla de abajo observará que es
muy simple manejar puntualmente cada uno de los pines.

 

Por ejemplo, si queremos hacer que los terminales 4, 6, 8 y 9 del
puerto paralelo se enciendan quedando los otros apagados debemos sumar
los valores correspondientes a esos pines y enviar dicho resultado a
la dirección del puerto. En este ejemplo el dato a enviar sería:
4 + 16 + 64 + 128 lo que equivale a 212

Para que todos los pines se enciendan tendremos que enviar el valor 255,
mientras que para que todos se apaguen deberemos enviar el valor 0.

La dirección del puerto LPT1 usualmente es 378, la del puerto LPT2 suele
ser 278 y la del puerto LPT3 casi siempre es 3BC. Aunque esto depende de
como esté configurado su hardware. Una forma de determinar la dirección
del puerto es presionando la tecla Pause al comienzo de la carga del
sistema operativo. Verá una tabla donde el BIOS reporta los parámetros
básicos del equipo, incluyendo datos sobre los puertos.

Control de Potencia con Triacs:

Este circuito permite manejar cargas que funcionen con 220V de la red
eléctrica y que consuman no mas de 1500W. Las posibilidades son:
Lámparas, cafeteras, veladores, electrodomésticos, accesorios, etc.
Televisores y equipos de sonido también pueden ser conectados, pero
seria inútil ya que éstos equipos requieren ser encendidos por “soft”
presionando la tecla Power. Entonces, al darle alimentación el equipo
quedará a la espera de ser encendido.

circuitotriacs

La señal digital proveniente del puerto es limitada en corriente y
aplicada al cátodo del LED interno del optoacoplador. El ánodo de ese
diodo es cableado a MASA digital (pin 25 del puerto paralelo). El
brillo producido por el LED acciona el Triac del opto, que, a su vez,
acciona el triac de potencia. La red RC conectada en paralelo con el
triac de potencia limita la velocidad de evolución de la tensión ante
cargas inductivas.

El optoacoplador incluye en su interior un circuito de detección de
cruce por cero (denominado ZCC). Este sistema hace que la conmutación
sea posible sólo cuando el semiciclo de la corriente alterna se
encuentra en 0V.

El optoacoplador puede ser un MOC3040 ó un MOC3041. El triac debe ser
capaz de manejar 8A sobre 400V. Es indispensable montar el Triac en
un buen disipador térmico.

El circuito mostrado arriba corresponde a un solo canal. Para montar
un sistema de mas canales repetir este tantas veces como canales
necesarios. Recuerde conectar sólo un circuito a cada pin del puerto
paralelo.

Control de Portencia Con Relés:

El relé es un dispositivo mecánico capaz de comandar cargas pesadas
a partir de una pequeña tensión aplicada a su bobina. Básicamente la
bobina contenida en su interior genera un campo magnético que acciona
el interruptor mecánico. Ese interruptor es el encargado de manejar
la potencia en sí, quedando al circuito electrónico la labor de
“mover” la bobina. Permite así aislar mecánicamente la sección de
potencia de la de control. Pero para accionar la bobina la corriente
y tensión presente en un puerto paralelo no es suficiente.

circuitoreles

Este circuito es extremadamente simple y permite manejar ocho relés
con bobinas de 12V a partir de los pines de un puerto paralelo.
Podemos decir que TODOS los componentes de protección y limitación
de corriente, además de los transistores de potencia están incluidos
dentro del circuito integrado.

Si “miramos con la lupa” podremos ver en el interior del chip
ULN2803 ocho esquemas como el de abajo, uno para cada uno de los
canales.

canal

Es normal que la cápsula de este circuito integrado esté tibia con
respecto a la temperatura ambiente. Se debe, como era de suponerse,
a que la corriente requerida por cada relé pasa por sus “entrañas”
y, como sabemos, el manejo de corriente genera calor.

Con las llaves de cada relé el usuario puede manejar lo que le plazca,
siempre que no exceda las especificaciones de tensión y corriente
para la cual están diseñadas. De requerir mayores potencias se puede
emplear el relé para accionar un contactor industrial ú otro relé de
mayor corriente. Es una buena práctica colocar en cada relé un fusible
de protección. Siempre es mas simple cambiar un fusible que desoldar
un relé o reparar pistas de un circuito impreso.

En esta plaqueta he usado los 8 puertos de salida directamente con relés y los 4 puertos de entrada como interruptores, es decir, un circuito normal abierto entre el pin de entrada y masa.
Esta es la plaqueta terminada:
Nov2801

Estos puentes de alambre que se ven son errores míos en el diseño del pcb.

 Aquí pueden descargar los fuentes de control en Visual Basic 6.

runtime foxpro windows 2.6


Al intentar ejecutar un archivo de foxpro 2.6 para windows, podemos obtener el siguiente mensaje de error: “Cannot locate Fox Pro support library”.

Sin embargo, para poder ejecutar los compilados de foxprow 2.6, no es necesario instalar ningún runtime especial, solo debemos copiar los siguientes archivos:

- foxw2600.esl en el mismo directorio que el ejecutable
- foxfont.fon en el mismo directorio del ejecutable

 

 

Dejar de Fumar


Fumar es un placer… dicen…, perdón, decimos….

Lo que pasa es que deja de ser un placer cuando ya es un habito…,

Deja de ser placer cuando incrementamos la cantidad de cigarrillos en el día…

Deja de ser un placer cuando sentimos culpa por no poder dejarlo…

Deja de ser un placer cuando nos damos cuenta de que el cigarrillo nos controla….

Deja de ser un placer cuando nos engañamos a nosotros mismos con excusas para seguir fumando…

Yo dejé de fumar a los 30 por una sola razón:

No quería que mi hija que estaba por nacer me viera con el cigarrillo en la mano desde chica.

No quería que me preguntara “papá, por que fumas ?

y sobre todo, no quería que ella creciera con la idea de que “fumar es algo normal de los grandes porque papá fuma.

Coincido: es dificil dejar de fumar.

Pero se puede.

Fuí bajando la cantidad de cigarrillos por día, anotando en un papelito que llevaba en el bolsillo cuantos había fumado y a que hora.

Luego comencé a limitar la cantidad de cigarrillos por día, desde los dos atados diarios, bajé a un atado durante unos días, luego 15, luego 10, luego 5, luego 2… hasta que me animé a estar 1 día sin fumar.

Pero no fué facil… y fallé. El intento con este método lo hice 2 veces y recién a la tercera pude lograrlo.

Por supuesto que el ingrediente fundamental es tomar la decisión de dejar el cigarrillo. Pero también hoy en día hay mucha ayuda para lograrlo, como por ejemplo el odranal, que es una droga utilizada para inhibir la adicción.

Por sobre todo: No nos engañemos a nosotros mismos. Yo recuerdo que me ponía una y mil excusas para fumar un cigarrillo o para no dejarlo.

Los primero días les va a parecer que les falta un amigo, una compañia… falsa compañia diría yo.

Como resultado puedo decirles que la vida de un no fumador es una vida nueva:

– Redescubrir los sabores y lo olores.

– Sentirse bien fisicamente

El fumador no lo entiende hasta que no lo deja, porque el cigarrillo no se lo permite.

Se puede.

Eliminar notificación / advertencia windows original en XP


1) Iniciar en modo a prueba de fallos presionando f8 antes de que arranque windows.
Posicionarse en c:\windows\system32.

2) Eliminar o renombrar los archivos: WgaTray.exe y WgaLogon.dll tanto de la
carpeta System32 como de la carpeta WINDOWS\SoftwareDistribution\

3) Con el regedit, borrar la entrada “Wgalogon” que se encuentra en HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS

NT\CURRENTVERSION\WINLOGON\NOTIFY
 
Reiniciar y listo