Visual Basic para Aplicaciones - Como Ejecutar un Exe Mediante EL REGEDIT

Life is soft - evento anual de software empresarial
 
Vista:

Como Ejecutar un Exe Mediante EL REGEDIT

Publicado por Alexander (2 intervenciones) el 21/02/2001 21:58:12
Hola amigos haber si pueden escribirme un ejemplo o explicarme como puedo hacer para que un programa executable (xx.exe) se pueda ejecutar cuando inicie windows creo que es mediante el regedit ¿Como lo puedo Hacer?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como Ejecutar un Exe Mediante EL REGEDIT

Publicado por Adán (14 intervenciones) el 23/02/2001 05:22:14
Antes que nada este código no es mío, pero no recuerdo de dónde lo saqué ya que tiene algo de tiempo.

Este ejemplo en realidad cambia al usuario de Windows, pero si cambias el HYEY_LOCAL_MACHINE por HKEY_CURRENT_USER (sólo para el usuario actual, pero si es para todos deja el Local machine) y el "Software\Microsoft\Windows\CurrentVersion" por "Software\Microsoft\Windows\CurrentVersion\Run" queda el código listo para lo que quieres

Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002

Private Declare Function RegCreateKey Lib _
"advapi32.dll" Alias "RegCreateKeyA" _
(ByVal Hkey As Long, ByVal lpSubKey As _
String, phkResult As Long) As Long

Private Declare Function RegCloseKey Lib _
"advapi32.dll" (ByVal Hkey As Long) As Long

Private Declare Function RegSetValueEx Lib _
"advapi32.dll" Alias "RegSetValueExA" _
(ByVal Hkey As Long, ByVal _
lpValueName As String, ByVal _
Reserved As Long, ByVal dwType _
As Long, lpData As Any, ByVal _
cbData As Long) As Long

Private Const REG_SZ = 1
Private Const REG_DWORD = 4

Public Function ChangeWindowsOwner(OwnerName As String, _
Organization As String) As Boolean
On Error GoTo ErrorHandler
Dim bAns As Boolean

If OwnerName = "" Or Organization = "" Then
ChangeWindowsOwner = False
Exit Function
End If

bAns = SaveString(HKEY_LOCAL_MACHINE, _
"Software\Microsoft\Windows\CurrentVersion", _
"RegisteredOwner", OwnerName)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como Ejecutar un Exe Mediante EL REGEDIT

Publicado por Adán (14 intervenciones) el 23/02/2001 05:44:18

ChangeWindowsOwner = bAns
Exit Function
ErrorHandler:

ChangeWindowsOwner = False
Exit Function

End Function

Private Function SaveString(Hkey As Long, strPath As String, _
strValue As String, strdata As String) As Boolean

Dim keyhand As Long
Dim r As Long
r = RegCreateKey(Hkey, strPath, keyhand)
r = RegSetValueEx(keyhand, strValue, 0, _
REG_SZ, ByVal strdata, Len(strdata))
r = RegCloseKey(keyhand)
SaveString = (r = 0)
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PUEDES SER UN POCO MAS CLARO Y EXPLICA PORFAVOR

Publicado por Alexander (4 intervenciones) el 23/02/2001 15:50:14
Puedes ser mas claro y si puedes da una explicadita de como puedo pasar la ruta del archivo ejecutable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PUEDES SER UN POCO MAS CLARO Y EXPLICA PORFAVOR

Publicado por ginger 8 (6 intervenciones) el 24/02/2001 19:24:30
hola, he visto lo que pedias y lo que te han puesto y yo, que se como va, hasta me le liado, como bien dice, los archivos que se ejecutan al inicio de windows se pueden guardar en "HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Run" y para saber la ruta del programa es "App.Path" (esto no es nada raro, simplemente es una funcion) pero si quieres poner la ruta del .exe y el ejecutable tambien, tienes que poner por ejemplo esto:

Dim Ruta As String
Ruta = App.Path & "\" & App.EXEName & ".exe"

si quieres las funciones que hacen que guardes, modifiques o elimines valores en el registro dame un toque al mail.

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PUEDES SER UN POCO MAS CLARO Y EXPLICA PORFAVOR

Publicado por Adán (14 intervenciones) el 25/02/2001 17:24:05
Lo siento, es que por falta de tiempo no pude explicarme, pero ahí va:

*Para comenzar, las aplicaciones que se cargan al inicio se guardan en el Registro en "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" para cualquier usuario, y para el usuario que en ese momento esté usando la computadora es "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", y necesitamos unas DLL's para poder accesar a dicho registro:

' Valor que identifica la raiz
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002

'Tipo de dato: String
Private Const REG_SZ = 1

'Variable que en la que se guardará la ruta de tu programa
Private Const CORRER = "MiPrograma"

Private Declare Function RegCreateKey Lib _
"advapi32.dll" Alias "RegCreateKeyA" _
(ByVal Hkey As Long, ByVal lpSubKey As _
String, phkResult As Long) As Long

Private Declare Function RegCloseKey Lib _
"advapi32.dll" (ByVal Hkey As Long) As Long

Private Declare Function RegSetValueEx Lib _
"advapi32.dll" Alias "RegSetValueExA" _
(ByVal Hkey As Long, ByVal _
lpValueName As String, ByVal _
Reserved As Long, ByVal dwType _
As Long, lpData As Any, ByVal _
cbData As Long) As Long

'aquí se abre el Registro, se inserta el valor y luego se cierra
Public Function AgregarRegistro(ruta as String) As Boolean
Dim keyhand As Long
Dim r As Long

'Si quieres que sólo sea para el usuario actual,
'en lugar de colocar HKEY_LOCAL_MACHINE coloca
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PUEDES SER UN POCO MAS CLARO Y EXPLICA PORFAVOR

Publicado por Adán (14 intervenciones) el 27/02/2001 07:24:03
(..Continuación)

'HKEY_CURRENT_USER
r = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", keyhand)
r = RegSetValueEx(keyhand, CORRER, 0, _
REG_SZ, ByVal ruta, Len(ruta))
r = RegCloseKey(keyhand)
SaveString = (r = 0)
End Function

'Se llama a la función:
Dim x as Boolean
x = AgragarRegistro("ruta de mi programa")
If x Then msg = "Necesita reiniciar el sistema para que los cambios tengan efecto" Else "No se pudo configurar"

¿Por qué no permiten que los mensajes sean más largos, o que se puedan colocar datos adjuntos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar