Autor
|
Tema: Ayuda con mi programa (Leído 2,595 veces)
|
LukaCrosszeria
Desconectado
Mensajes: 79
Lets go baby~
|
Saludos! Tengo una duda, como puedo agregar/eliminar una variable de sistema permanentemente? He leido guias y lo he logrado, pero automaticamente en el reinicio se elimina. Quisiera que se quedaran permanentemente este es el codigo que tengo: Public Class Form1 Public Declare Function SetEnvironmentVariable Lib "kernel32.dll" Alias "SetEnvironmentVariableA" (ByVal _ lpName As String, ByVal lpValue As String) As Long Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click SetEnvironmentVariable("Test", "1234") End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Shell("shutdown -r -f -t 0") 'Reinicia el equipo en Win XP End Sub End Class
Saludos!
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buenas LukaCrosszeria, tú código es totalmente funcional sólo para modificar variables del sistema temporalmente, nada queda guardado en el registro. Para ello deberías replantear tu código y adaptarlo para que escriba en el registro. La siguiente información la he extraído de la msdn donde tienes la documentación completa de como trabajar con Environment Variables: ... ... Calling SetEnvironmentVariable has no effect on the system environment variables. To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key ... ...
Link -> http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653%28v=vs.85%29.aspxSaludos!
|
|
|
En línea
|
|
|
|
LukaCrosszeria
Desconectado
Mensajes: 79
Lets go baby~
|
Saludos! Hice lo que pude, intente agregar al registro el valor directamente pero me da un error. Este es el codigo: Imports System.IO Imports System.Security.Principal Public Class Form1 Public Declare Function SetEnvironmentVariable Lib "kernel32.dll" Alias "SetEnvironmentVariableA" (ByVal _ lpName As String, ByVal lpValue As String) As Long Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click My.Computer.Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment").SetValue("Test", "1234", Microsoft.Win32.RegistryValueKind.String)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Shell("shutdown -r -f -t 0") 'Reinicia el equipo en Win XP End Sub
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
End Sub End Class
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Para escribir en la rama del registro (HKLM) del sistema necesitas de privilegios de administrador ya que las políticas ahí expuestas son comunes a todos los usuarios, por lo que win$ lleva un control riguroso sobre las modificaciones. Por lo demás todo se ve fino, aunque no lo probé. Aun así aqui puedes echarle un vistazo a la documentación de la msdn sobre las Registry Keys: http://msdn.microsoft.com/es-es/library/2kk9bxk9%28v=vs.110%29.aspxSaludos!
|
|
|
En línea
|
|
|
|
LukaCrosszeria
Desconectado
Mensajes: 79
Lets go baby~
|
En tal caso, como le daria permisos a mi programa para que pudiera registrar las llaves de entradas en el registro de Environments Variables?
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buenas de nuevo, se me ocurren dos maneras, la primera es manual y sería ejecutando el programa en modo administrador para otogarle los máximos privilegios del usuario. La otra es mediante el manifiesto de la aplicación .NET, los manifiestos son archivos que describen propiedades (así como los de metadatos) y una de esas propiedades define el nivel de privilegios requerido por la aplicación, esto último lo podras leer aquí: http://msdn.microsoft.com/es-es/library/bb384691.aspxSaludos!
|
|
|
En línea
|
|
|
|
LukaCrosszeria
Desconectado
Mensajes: 79
Lets go baby~
|
Este es el error que me da:
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Anteriormente te dije que era la falta de privilegios, realmente necesitas permisos de lectura sobre esa rama del registro, aquí te dejo la descripción de la excepción segun la MSDN pero es algo sobre lo que ya te he advertido, nada nuevo: UnauthorizedAccessException
The RegistryKey is read-only, and cannot be written to; for example, the key has not been opened with write access.
Esto está extraído del segundo enlace que puse... Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
AYUDA CON PROGRAMA
Diseño Gráfico
|
Luisango
|
1
|
2,415
|
17 Abril 2005, 13:25 pm
por Sub_Cero
|
|
|
ayuda con mi programa
Programación Visual Basic
|
nitrox
|
2
|
2,314
|
31 Julio 2005, 00:48 am
por Slasher-K
|
|
|
ayuda programa!!
Programación C/C++
|
rodrigo_103
|
4
|
3,326
|
16 Septiembre 2012, 21:58 pm
por rodrigo_103
|
|
|
[Ayuda] ¿Cómo ejecutar otro programa desde mi programa de C#?
.NET (C#, VB.NET, ASP)
|
Zodiak98
|
1
|
6,019
|
8 Diciembre 2013, 01:51 am
por Eleкtro
|
|