none
Modify REGISTRY with power shell / vbscript/ js with a VARIABLE (username) RRS feed

  • Pregunta

  • Hello, first of all, thanks to all.

    i need to configure a ODBC setting in the registry. i have the .reg file, but i need to make it variable, to change one path in the .reg file.

    i´m spanish, my english is.. xD  better with and example...

    [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\FACOMI]
    "DBQ"="W:\\FACTURAMDB\\JOAQUIN\\FACTURA.MDB"       <-----------------
    i need change \\joaquin\\  to "active directory current user name"  ( to make it in a logon script).

     

    thanks !!


    joaquin
    martes, 17 de mayo de 2011 6:50

Respuestas

  • ¡¡Estás en un foro en apañól!! :oP

    Puedes modificar el registro de forma programada de muchas maneras:

    Trabajar con el registro desde línea de comandos
    http://freyes.svetlian.com/registro/registro.htm

    Trabajar con el registro desde PowerShell
    http://freyes.svetlian.com/powershell-registro.htm

    En concreto para el ejemplo que pones, podrías generar de nuevo el fichero reg de una manera similar a esta (imaginamos que el fichero reg es Original.reg y que generaremos Generado.reg) con powershell:

    # Obtenemos el contenido del fichero reg
    $Contenido = Get-Content Original.reg
    
    # Iniciamos el contenido del fichero de salida (multilínea)
    $Salida = @()
    
    # Recorremos el contenido línea a línea
    ForEach($Linea in $Contenido)
    {
      # Vaciamos la variable de nueva línea de valores anteriores
      $NuevaLinea = ""
    
      # Si encontramos la linea del valor del registro DBQ
      If($Linea -like """DBQ""*")
      {
    
        # Convertimos la línea en array, usando como separador el slash inverso
        # al que previamente lo dejamos simple en lugar de doble
        $arrLinea = ($Linea -replace "\\\\","\").Split("\")
        
        # Agregamos el primer elemento del array a la línea.
        $NuevaLinea = "$($arrLinea[0])"
        
        # Recorremos el array
        For($Elemento=1;$Elemento -lt $arrLinea.Length;$Elemento++)
        {
          # El elemento que queremos cambiar es el de índice 2 (el 0 es 
          # "DBQ"="W:, el 1 FACTURAMDB y el 3 FACTURA.MDB). Sustituimos el
          # valor de este elemento con el contenido de la variable de entorno
          # USERNAME
          If($Elemento -eq 2){$arrLinea[2]=$env:username}
          
          # Agregamos el elemento actual poniendo el separado original en el
          # fichero (doble slash inverso)
          $NuevaLinea = "$NuevaLinea\\$($arrLinea[$Elemento])"
        }
      }
      Else
      {
        # No es una línea a cambiar y por tanto la dejamos intacta
        $NuevaLinea = $Linea
      }
      
      # Agregamos la línea a la salida
      $Salida += $NuevaLinea
    }
    # Creamos el fichero con el contenido generado en $Salida
    $Salida | Set-Content Generado.reg -Force
    
    

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)




    • Marcado como respuesta kinomakinoMVP martes, 17 de mayo de 2011 9:26
    martes, 17 de mayo de 2011 8:31
    Moderador
  • Gracias a ti, espero que te sirva de algo.
    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    • Marcado como respuesta kinomakinoMVP martes, 17 de mayo de 2011 10:21
    martes, 17 de mayo de 2011 9:27
    Moderador

Todas las respuestas

  • ¡¡Estás en un foro en apañól!! :oP

    Puedes modificar el registro de forma programada de muchas maneras:

    Trabajar con el registro desde línea de comandos
    http://freyes.svetlian.com/registro/registro.htm

    Trabajar con el registro desde PowerShell
    http://freyes.svetlian.com/powershell-registro.htm

    En concreto para el ejemplo que pones, podrías generar de nuevo el fichero reg de una manera similar a esta (imaginamos que el fichero reg es Original.reg y que generaremos Generado.reg) con powershell:

    # Obtenemos el contenido del fichero reg
    $Contenido = Get-Content Original.reg
    
    # Iniciamos el contenido del fichero de salida (multilínea)
    $Salida = @()
    
    # Recorremos el contenido línea a línea
    ForEach($Linea in $Contenido)
    {
      # Vaciamos la variable de nueva línea de valores anteriores
      $NuevaLinea = ""
    
      # Si encontramos la linea del valor del registro DBQ
      If($Linea -like """DBQ""*")
      {
    
        # Convertimos la línea en array, usando como separador el slash inverso
        # al que previamente lo dejamos simple en lugar de doble
        $arrLinea = ($Linea -replace "\\\\","\").Split("\")
        
        # Agregamos el primer elemento del array a la línea.
        $NuevaLinea = "$($arrLinea[0])"
        
        # Recorremos el array
        For($Elemento=1;$Elemento -lt $arrLinea.Length;$Elemento++)
        {
          # El elemento que queremos cambiar es el de índice 2 (el 0 es 
          # "DBQ"="W:, el 1 FACTURAMDB y el 3 FACTURA.MDB). Sustituimos el
          # valor de este elemento con el contenido de la variable de entorno
          # USERNAME
          If($Elemento -eq 2){$arrLinea[2]=$env:username}
          
          # Agregamos el elemento actual poniendo el separado original en el
          # fichero (doble slash inverso)
          $NuevaLinea = "$NuevaLinea\\$($arrLinea[$Elemento])"
        }
      }
      Else
      {
        # No es una línea a cambiar y por tanto la dejamos intacta
        $NuevaLinea = $Linea
      }
      
      # Agregamos la línea a la salida
      $Salida += $NuevaLinea
    }
    # Creamos el fichero con el contenido generado en $Salida
    $Salida | Set-Content Generado.reg -Force
    
    

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)




    • Marcado como respuesta kinomakinoMVP martes, 17 de mayo de 2011 9:26
    martes, 17 de mayo de 2011 8:31
    Moderador
  • Fernando, eres la efectividad en persona. te sigo desde la epoca de mi mcsa 2000. y eres un crack.

    muchas gracias, voy a investigar la solucion. un saludo desde Murcia


    joaquin
    martes, 17 de mayo de 2011 9:22
  • Gracias a ti, espero que te sirva de algo.
    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    • Marcado como respuesta kinomakinoMVP martes, 17 de mayo de 2011 10:21
    martes, 17 de mayo de 2011 9:27
    Moderador