elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Scripting / Re: Desinstalación desatendida en: 23 Noviembre 2024, 22:36 pm
Estimado Elektro...

Muy agradecido por tus palabras,

La verdad es que no soy de los que se rinden por muy difícil que sea el reto. Pero sin tu descripción jamás lo hubiera hecho, aun teniendo la ayuda de la Ai.

Cabe aclarar, que aunque tengo conocimientos de programación en varios lenguajes, es más que obvio que tuve ayuda adicional, ya que desconozco el lenguaje en cuestión.

Mi ayudante fue Copilot, con varias sugerencias de mi parte.

Por otro lado, será un placer y estaré más que encantado de contar en el futuro con tu valiosa ayuda.

Hasta la pronto!!

Un abrazo desde el norte del sur
2  Programación / Scripting / Re: Desinstalación desatendida en: 21 Noviembre 2024, 16:50 pm
Hola muchachos.

Aquí les dejo el código por si a alguien le sirve. No lo hubiera logrado sin la ayuda de todos, en especial las pistas muy exactas que me dio Elektro

Código:
# Codigo PowerShell para abrir la ventana de desinstalacion y enviar TAB y ENTER
Add-Type @"
using System;
using System.Text;
using System.Runtime.InteropServices;

public class User32 {
    [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int GetWindowTextLength(IntPtr hWnd);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

    [DllImport("user32.dll")]
    public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

    public const uint WM_KEYDOWN = 0x0100;
    public const uint WM_KEYUP = 0x0101;
    public const int VK_TAB = 0x09;
    public const int VK_RETURN = 0x0D;

    public static bool EnumTheWindows(IntPtr hWnd, IntPtr lParam) {
        int length = GetWindowTextLength(hWnd);
        if (length == 0) {
            return true;
        }

        StringBuilder builder = new StringBuilder(length);
        GetWindowText(hWnd, builder, length + 1);

        Console.WriteLine("Ventana encontrada: " + builder.ToString());

        if (builder.ToString() == "Mantenimiento de ComponentesHarware") {
            // Guardar el handle de la ventana principal
            Marshal.WriteIntPtr(lParam, hWnd);
            return false; // Detener la enumeracion de ventanas
        }
        return true;
    }
}
"@

# Funcion para desinstalar el programa
function Uninstall-Program {
    # Ejecutar la linea de desinstalacion
    Write-Output "Ejecutando linea de desinstalacion..."
    Start-Process "rundll32.exe" -ArgumentList "dfshim.dll,ShArpMaintain ComponentesHarware.application, Culture=neutral, PublicKeyToken=b3fd472d4be1fc0f, processorArchitecture=msil"

    # Pausa para verificar
    #Write-Output "Pausando despues de ejecutar la linea de desinstalacion. Presiona Enter para continuar..."
    #Pause

    # Esperar a que la ventana de desinstalacion aparezca
    Write-Output "Esperando 5 segundos para que aparezca la ventana de desinstalacion..."
    Start-Sleep -Seconds 5

    # Encontrar la ventana de desinstalacion
    $hwndPtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf([IntPtr]::Zero))
    [User32]::EnumWindows([User32+EnumWindowsProc] { param ($hWnd, $lParam) [User32]::EnumTheWindows($hWnd, $lParam) }, $hwndPtr)

    $hwnd = [System.Runtime.InteropServices.Marshal]::ReadIntPtr($hwndPtr)
    [System.Runtime.InteropServices.Marshal]::FreeHGlobal($hwndPtr)

    if ($hwnd -ne [IntPtr]::Zero) {
        #Write-Output "Ventana de desinstalacion encontrada: $hwnd"

        # Enviar TAB dos veces para enfocar el boton "Aceptar", luego ENTER para confirmar
        #Write-Output "Enviando TAB dos veces y luego ENTER para confirmar la desinstalacion..."

        [User32]::PostMessage($hwnd, [User32]::WM_KEYDOWN, [User32]::VK_TAB, [IntPtr]::Zero)
        Start-Sleep -Milliseconds 200
        [User32]::PostMessage($hwnd, [User32]::WM_KEYUP, [User32]::VK_TAB, [IntPtr]::Zero)

        [User32]::PostMessage($hwnd, [User32]::WM_KEYDOWN, [User32]::VK_TAB, [IntPtr]::Zero)
        Start-Sleep -Milliseconds 200
        [User32]::PostMessage($hwnd, [User32]::WM_KEYUP, [User32]::VK_TAB, [IntPtr]::Zero)

        [User32]::PostMessage($hwnd, [User32]::WM_KEYDOWN, [User32]::VK_RETURN, [IntPtr]::Zero)
        Start-Sleep -Milliseconds 200
        [User32]::PostMessage($hwnd, [User32]::WM_KEYUP, [User32]::VK_RETURN, [IntPtr]::Zero)

        # Pausa despues de intentar presionar el boton
        #Write-Output "Pausando despues de intentar presionar el boton. Presiona Enter para continuar..."
        #Pause
    } else {
        Write-Output "No se encontro la ventana de desinstalacion."

        # Pausa para verificar
        #Write-Output "Pausando despues de no encontrar la ventana. Presiona Enter para continuar..."
        #Pause
    }

    # Pausa final para ver los resultados
    #Write-Output "Pausando al final del script. Presiona Enter para continuar..."
    #Pause
}

# Llamar a la funcion para desinstalar el programa
Uninstall-Program

Agradecido como siempre por vuestra ayuda y consejos.

Hasta la próxima...
3  Programación / Scripting / Re: Desinstalación desatendida en: 19 Noviembre 2024, 19:26 pm
Buenas tardes.

Le meteré el ojo a lo que comentan

Agradecido por todos los aportes. 👍🏼
4  Programación / Scripting / Re: Desinstalación desatendida en: 12 Noviembre 2024, 17:07 pm
Gracias por las respuestas, sugerencias y comentarios.

Hotkey no lo conozco, haré lo posible por revisarlo e implementarlo en el futuro.

Con respecto al Cliconce busque y trate de darle sentido a tu propuesta pero ni idea a qué te referías.

El problema lo resolví de la siguiente forma.

Código:
:DeleteProgram
start /min cmd /c "timeout /t 3 & powershell -command "$wshell = New-Object -ComObject wscript.shell; $wshell.AppActivate('Mantenimiento de ComponentesHarware'); Start-Sleep -Milliseconds 500; $wshell.SendKeys('{TAB}'); Start-Sleep -Milliseconds 500; $wshell.SendKeys('{TAB}'); Start-Sleep -Milliseconds 500; $wshell.SendKeys('{ENTER}')""
rundll32.exe dfshim.dll,ShArpMaintain ComponentesHarware.application, Culture=neutral, PublicKeyToken=b3fd472d4be1fc0f, processorArchitecture=msil
pause
goto menu

La razón del porque uso dos tab es por Las opciones que aparecen en la imagen.



Con respecto a tocar el registro.
Según entiendo, porque de saber no se nada. No estoy tocando directamente el registro. Estoy usando la instrucción para desinstalar el dichoso programita.

Instrucción que se encuentra en el registro como para cualquier programa según entiendo.

Y hacerlo manual en más de 15 mil maquinas es una locura.

Agradecido como siempre por vuestra ayuda

5  Programación / Scripting / Re: Desinstalación desatendida en: 11 Noviembre 2024, 19:38 pm
Buenas muchachos.

Como comenté al inicio: es la única forma que encuentro para desinstalarlo.

Lo que no comenté es que en el pasado he tratado de hacerlo con el comando Wmic. Pero no encuentra el programa por el nombre que muestra, y listando los programas este tampoco aparece.

Así que la única opción que me quedo fue la del registro.

Los comandos /S /q o sus variantes no funcionan. Eso lo probé antes de postear.

Por tal motivo hice la consulta.

Si consideran que no hay más opciones me tocará dejarlo así y hacerlo manualmente.

Agradecido de todos modos
6  Programación / Scripting / Re: Desinstalación desatendida en: 11 Noviembre 2024, 16:38 pm
Gracias por responder.

El error me da al usar el parámetro /S.

Al usarlo sin el parámetro me muestra la venta de desinstalacion en donde debo dar aceptar y lo desinstalo sin problemas. Ya lo he probado en unos 50 equipos diferentes.

Pero la idea es no tener que darle a aceptar para desinstalar.

Por eso la consulta  :huh:
7  Programación / Scripting / Re: Desinstalación desatendida en: 11 Noviembre 2024, 09:29 am
Buenos días amigos.

Nadie tiene idea de que parámetros agregar para que no pida la confirmación ?

He usado /S pero pero me da error, diciendo que no desinstalo el programa.

Alguna idea ?

Agradecido de antemano por vuestra ayuda.
8  Programación / Scripting / Desinstalación desatendida en: 7 Noviembre 2024, 19:33 pm
Buenas tardes amigos.

Tengo una duda con respecto a la desinstalación de un programa desde un archivo Batch

La única forma en que puedo ejecutar la desinstalación del mismo mediante la consola de comandos, es mediante esta linea que extraje del UninstallString del editor de registro.

rundll32.exe dfshim.dll,ShArpMaintain ComponentesHarware.application, Culture=neutral, PublicKeyToken=b3fd472d4be1fc0f, processorArchitecture=msil

Pero no encuentro una manera de hacer que la desinstalación sea sin intervención del usuario, ya que al ejecutar la linea muestra la ventana de desinstalación pero pide la confirmación (aceptar).

Hay alguna forma de que sea desatendida y/ o silenciosa ?

De antemano muchísimas gracias por el apoyo.
9  Programación / Scripting / Re: Buscar datos en una base de datos externa con Batch en: 17 Febrero 2022, 16:41 pm
Si, es una lastima  :(, será en otra oportunidad.

Muchas gracias por el link  ;-)
10  Programación / Scripting / Obtener Serial de unidad optica en: 17 Febrero 2022, 16:38 pm
Buenas amigos.

Tengo problemas para obtener el serial de la unidad óptica de la laptop.

He probado con los siguientes sin resultado:

Código:
wmic cdrom get serialnumber
wmic cdrom D: get serialnumber
wmic cdrom where drive='D:' get serialnumber
wmic cdrom where mediatype!='unknown' get SerialNumber
wmic /output:stdout  cdrom where mediatype!='unknown' get SerialNumber

Dato curioso, usando estos tampoco obtengo el serial en la lista.

Código:
wmic /output:stdout  cdrom get /all /format:list
wmic cdrom where mediatype!='unknown' get /all /format:list

Alguna idea de como obtenerlo ¿?

Agradecido de antemano por la ayuda que me puedan brindar.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines