ME gustaria saber en VB6 como hacer para ir a un directorio de una manera FIja y segura.
Yo tengo un codigo que me permite detectar "C:\Windows" sea la letra que sea, eso asegura poder escribir en el directorio windows y subcarpetas de forma segura siempre.
Pero yo necesito escribir algo en varias subcarpetas en Doucments and settnigs, adminsitrador. (en XP) y Users \Admin en seven.
Como no tengo ninguna seguridad de que si "Adminitrador" es adminsitrador, y si admin es admin, me gustaria saber un codigo para que me lo haga seguro.
Y otra cosa, si tengo varias sesiones, como sé a cual se dirige el codigo?
El codigo que tengo apra decidir sobre c:\windows sobre todo, es el siguiente:
Option Explicit
Private Declare Function GetWindowsDirectory _
Lib "kernel32" Alias "GetWindowsDirectoryA" ( _
ByVal lpBuffer As String, _
ByVal nSize As Long) _
As Long
Private Function GetWinDir() As String
Dim Temp As String * 256
Dim x As Integer
x = GetWindowsDirectory(Temp, Len(Temp)) ' Make API Call (Temp will hold return value)
GetWinDir = Left$(Temp, x) ' Trim Buffer and return string
End Function
Y luego en vez de poner EJ:
Kill C:\windows\system32\Hola.dll Pongo:
kill GetWinDir & "\system32\hola.dll
Si pudiera hacer esto con Docuemntds and setiings y adminstrodor, y USers y admin, seria una gran ayuda,
Gracuas!
Mirate este módulo que hizo mi amigo raul :
http://goo.gl/0G9QL
DoEvents! :P
ExpandEnvironmentStrings():
http://msdn.microsoft.com/en-us/library/ms724265(v=vs.85).aspx
Ejemplo:
"%USERPROFILE%\MiCarpeta" -> "C:\Users\MiUsuario\MiCarpeta"
Y asi con cualquier variable de entorno:
http://es.wikipedia.org/wiki/Variable_de_entorno#Valores_por_defecto_de_las_variables_de_entorno
En las variables de entorno no esta %LOCALAPPDATA% en winXP asi que mi EnvironEx (https://foro.elhacker.net/programacion_visual_basic/aporte_environex-t305200.0.html;msg1515402) le gana a ExpandEnvironmentStrings :xD
Las ventajas de
ExpandEnvironmentStrings() sobre
SHGetFolderPath() son:
- No necesitas una lista de constantes
- No es necesario concatenar cadenas
Las desventajas son:
- Utilizas mas bytes en la cadena de la ruta
- Ciertas variables de entorno no se pueden obtener usando este metodo, como por ejemplo la ruta de INICIO
Y si lo haces con la funcion Environ? Mas simple xD
AAAAAAAAAAAA me habia olvidado de environ, Pasa q hace 6 meses q no toco vb y algunas cosasme aprecen chino XD. ahora leo todo las opciones que me dijeron y en un rato contesto.
mucas gracias!
Cita de: raul338 en 29 Diciembre 2010, 17:33 PM
Y si lo haces con la funcion Environ? Mas simple xD
Hay que concatenar :-*
Principalmente la funcion de
ExpandEnvironmentStrings() es expandir cadenas constantes... por ejemplo; Un packer, en el que puedes elegir donde se desempaqueta el fichero... puedes utilizar las variables de entorno y luego expandirlas sin mas...
Gracias a todos. Utilicé esta linea de codigo, que funcionó en XP y Seven. (aunque se llaman Adminsitrador y admin los usuarios, pero calculo que funcionará si el usuario se llama "CARLOS").
El problema es que si tengo más de una cuenta de usuario, no funciona. Alguna idea?
Public Function GetApp() As String
GetApp = CreateObject("Shell.Application").NameSpace(28).Self.Path
End Function
Private Sub Form_Load()
MkDir GetApp & "\Microsoft\Hola"
End Sub
Eso crea una carpeta "hola" en
C:\Documents and Settings\Administrador\Configuración local\Datos de programa\Microsoft\
Pero si tengo mas de una cuenta de usuario, no anda.
ideas?