miércoles, 23 de marzo de 2011

Cambiar la contraseña del administrador

Hace unos días, teníamos que cambiar la contraseña del administrador local de la máquina a todos los equipos de una red.

Para ello hemos utilizado la herramienta de Sysinternals llamada pspasswd con la que se puede cambiar la contraseña de un usuario de máquina:

La sintáxis es la siguiente:
pspasswd @fichero.txt -u usuario -p contraseña usuario_local_PC nueva_contraseña
Donde @fichero.txt es un fichero de texto que guarda las IP's o nombres de hosts a los que vamos a cambiar las contraseñas.

miércoles, 16 de marzo de 2011

¿Cuál es la tecla que menos usáis?

He estado pensándolo esta tarde, y me he dicho, ¿Cuál es la tecla que menos uso?, mi respuesta, la tecla bloq desp, o bloq num.

Cual es vuestra tecla…

Ampliar funcionalidades a los objetos de .NET

Los que venimos de programar en VB6, teníamos en los objetos ListView y Combobox las propiedades KEY que utilizábamos para guardar la primary key u otro dato que nos ayudaba a identificar el registro en cuestión.

En .NET estas propiedades ya no existen. Para solucionarlo, tenemos que ampliar estos controles para poder disponer de la misma funcionalidad. En esta entrada, voy a explicar cómo hacerlo para estos dos objetos, aunque lo podríamos hacer para todos los objetos que deseemos.

Ampliar funcionalidades para ListView
Nos creamos una clase (en mi caso se llamará TListItem) e introducimos este código:
Imports System.Windows.Forms
Public Class TListItem
Inherits ListViewItem

Private m_Key As Object

Public Property Key() As Object
Get
Return m_Key
End Get
Set(ByVal value As Object)
m_Key = value
End Set
End Property

Public Sub New(Optional ByVal Key As Object = vbNullString)
m_Key = Key
End Sub

End Class
Para cargar el ListView, simplemente haría falta añadir esta nueva clase que nos hemos creado:
loItem = New TListItem
loItem.Key = "nuestraclave"
loItem.Text = "Texto de inicio"
loItem.SubItems.Add("Subitem")
lsvLista.Items.Add(loItem)

Para tratarlo después, sólo hace falta convertir el elemento ListViewItem en el nuevo TListItem para poder acceder a los datos ampliados:
Msgbox CType(lsv.SelectedItems(0), TListItem).Key
Ampliar funcionalidades para ComboBox
Nos creamos una clase (en mi caso se llamará TCombo) e introducimos este código:

Public Class TCombo

Private m_Key As Object
Private m_Valor As String

Public Sub New(ByVal Key As Object, ByVal Valor As String)
m_Key = Key
m_Valor = Valor
End Sub

Public Overrides Function ToString() As String
Return m_Valor
End Function

Public ReadOnly Property Key() As Object
Get
Return m_Key
End Get
End Property

End Class
Para cargar el ComboBox, simplemente haría falta añadir esta nueva clase que nos hemos creado:
cboCombo.Items.Add(New TCombo("nuestraclave", "Texto del combo"))
Para obtener la key del elemento seleccionado del combo.
Msgbox CType(cboCombo.SelectedItem, TCombo).Key
Espero que sea de utilidad.

Solución al error de “No coinciden los tipos” al compilar con W7 con SP1

Ayer me instalé el SP1 de Windows 7. Cuál es mi sorpresa cuando compilo mi aplicación que utiliza las MDAC y da error "No coinciden los tipos". Testeando la aplicación, me daba error en:

Dim cn As Adodb.Connection
Set cn = new Adodb.Connection 'Aquí da ERROR NO COINCIDEN LOS TIPOS

Mirando en Microsoft, puedes solucionar este problema haciendo:
Dim cn As Object
Set cn = CreateObject("Adodb.Connection")

Si tienes una aplicación pequeña, recomiendo hacer esto, pero si tienes una aplicación muy grande, cambiar esto puede suponer un trabajo importante puesto que da error en cualquier objeto de las MDAC.

Microsoft ha sacado recientemente un hotfix para que los clientes que no tienen el SP1 de Windows 7, o Windows XP o cualquier otro Windows, puedan ejecutar aplicaciones que hayan sido compiladas bajo Windows 7 con SP1. Esto está muy bien, pero es que cuando el cliente tiene Windows 7 con SP1 de 32bits y tú lo has compilado en un Windows 7 de 64 bits, esa compilación tampoco funciona y, para mejorar la cosa, no puedes instalarle el Hotfix que soluciona el error (el hotfix sólo funciona para los Windows 7 que NO tienen en SP1 instalado).

Descarga del Hotfix de Microsoft: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=983246&kbln=es

Bueno, para solucionar el problema "momentáneamente", encontré una solución por internet. He realizado una copia de seguridad de las MDAC sin el SP1 puesto, me he puesto el SP1 y he vuelto a machacar las MDAC con las que tenía antes de realizar la actualización. De esta manera ya puedes compilar tus aplicaciones en Windows 7 con SP1 y que a todos tus clientes les funcione.

Los pasos a seguir son:
1. Abre el registro de sistema y ve a la siguiente clave:
32 bits: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C}
64 bits: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C}

2. Pulsa botón derecho a la carpeta -> Permisos
3. Pulsa en Opciones avanzadas
4. Ve a Propietario, selecciona Administradores y marca la casilla "Reemplazar propietario en subcontenedores y objetos"
5. Pulsa aceptar, en la lista de usuarios, selecciona Administradores y dale permisos de Control Total.
6. Acepta

7. Ve a la siguiente carpeta:
32 bits: C:\Program Files\Common Files\System\ado
64 bits: C:\Program Files (x86)\Common Files\System\ado

8. Selecciona el fichero msado28.tlb, pulsa botón derecho -> propiedades
9. Ve a la solapa Seguridad, pulsa Opciones Avanzadas.
10. Ve a la solapa Propietario y pulsa en Editar
11. Selecciona Administradores y pulsa Aceptar, vuelve a pulsar en Aceptar
12. En la solapa Seguridad, pulsa el botón Editar, selecciona el grupo Administradores y dale permisos de Control Total
13. Acepta y vuelve a aceptar
14. Hacer lo mismo para el fichero msado27.tlb ( desde el paso 8 )

15. Ejecuta el bat que hay en esta carpeta
32 bits: registrar ado 32.bat
64 bits: registrar ado 64.bat

Adjunto fichero donde se encuentran las copias de seguridad de los ficheros de las MDAC y los BAT correspondientes.
Descargar desde MEGAUPLOAD

Ya puedes compilar tus aplicaciones con el SP1 de Windows 7 sin que le salga al cliente "No coinciden los tipos"

lunes, 14 de marzo de 2011

Ruidos en el ordenador

Muchas veces los usuarios nos llaman para decirnos que sus ordenadores hacen mucho ruido o se calientan demasiado, he aquí el por qué:

Pichad sobre la imagen:




Y casi siempre la solución están en realizar una simple limpieza de ventiladores, disipadores,etc

sábado, 12 de marzo de 2011

Crisis en Japón!!!

Las imágenes del terremoto y posterior tsunami en Japón son impresionantes!!. A pesar de ser el país mejor preparado del mundo para los terremotos cuando la fuerza de la naturaleza descarga sobre sí todo su poderío, todo lo bien preparados que podamos estar no sirve de nada :(

Esperemos que todo el planeta se vuelque con Japón para ayudar, al fin y al cabo compartimos un mismo techo en esta gran casa llamada Tierra.


A propósito... Google, colabora a través de su portal  Google Crisis Response con el cual toda la gente en Japón puede ayudar a localizar familiares, amigos, a cualquier persona. 


Fuerza hermanos japoneses, estamos con ustedes!!


viernes, 11 de marzo de 2011

Desistalar el IE8 cuando no se puede por "Agregar Quitar Programas" para XP

Hola cuando tenemos que desistalar el IE8 y desde la opcion de "Agregar Quitar Programas" no tenemos habilitado el boton de "quitar" es porque se ha instalado dentro del SP3 de XP.

Para no tener que quitar todo el SP3 y solo quitar el IE8 tenemos que ir a la siguiente ruta:

c:\Windows\ie\spuninst\spuninst.exe (Ejecutamos este .EXE) y empezará la desistalacion del navegador.

Saludos a Tod@s.

Cuando el XP tarda mucho en Apagar

Este es un truco para cuando tenemos un equipo que al dar al boton de Apagado tarda y tarda en cerrar sesion y apagarse completamente.

La cuestion es que por defecto el XP en su registro tiene un contador para esperar a que se cierren los procesos que hay abiertos y hasta que no lo hace todo se te queda ahi esperando, pues bien lo que tenemos que hacer es:

Ir al editor de Registro:

Entramos luego hasta el nivel HKEY_CURRENT_USER -> Control Panel -> Desktop y localizamos alli la clave "WaitokillApptimeout", hacemos un doble click sobre ella y acontinuacion cambiamos el valor de 20.000 (que trae por defecto) por el de 4.000.

Ahora, y sin salir del editor, accedemos a HKEY_LOCAL_MACHINE -> System -> Current Control -> Control, para localizar de nuevo la clave "Waitokillaptime" y hacemos la misma operac ion que antes cambiamos el 20.000 por el 4.000.

Con esto los equipos cierran y apagan muy rapido.

Saludos a tod@s.

martes, 8 de marzo de 2011

Crear una tarea programada en varios equipos a la vez

Hoy he tenido que crear una tarea programada en Windows en 118 equipos con Windows XP SP2 Para ello, he utilizado el comando schtasks de windows y la utilidad psexec de Sysinternals
Este es el contenido del bat

@echo off
net use k :\ip\doc_compartido /user:usuario passw
echo Equipo: >> k:\log.log
hostname >> k:\log.log
set Usuario=%computername%\usuario_local
set Passwd=passw_local
schtasks /create /ru %Usuario% /rp %Passw% /sc monthly /mo Second /d Sun /tn "Nombre Tarea" /tr "Ruta bat/script" /st hora_inicio_tarea
Luego desde mi equipo lanzo la siguiente línea:

psexec @fichero.txt -u usuario -p contraseña -c script /quiet
El fichero.txt contiene la ip o nombre de los equipos a donde quiero enviar la tarea simultaneamente

La tarea se completó satisfatoriamente

lunes, 7 de marzo de 2011

Empezamos!!!

Hoy empezamos con nuestro blog, un sitio donde podremos dejar todos nuestros apuntes, tips, trucos, que van surgiendo en nuestro diario vivir con la informática y en general con las TIC's. Un sitio donde expondremos nuestras opiniones y comentarios sobre las últimas tecnologías y compartir así mismo nuestras propias experiencias