Hallo Liebe @Notes Gemeinde,
habe da mal eine Frage,
Ich habe schon im Forum gesucht, jedoch nicht das gefuden was ich gesucht habe. Folgendes Problem,
ich habe eine Datei auf einem Allgemeinen Netzlaufwerk und diese Datei soll nun per Button auf meine Privaten Desktop kopiert werden.
Ich möchte nicht mit AllUsers arbeiten....
Ich weiß ich kann mir den Pfad des Desktops aus der Registry ziehen, jedoch erhalte ich da ja noch die WindowsVariable "%USERPROFILE%" wie erhalte ich für diese Variable einen Pfad?
Hoffe Ihr könnt mir helfen. Vielen Dank..
Gruß Christian
P.S.
Mein Code bisher:
Dim text As Variant
text = Evaluate({@RegQueryValue("HKEY_Current_User"; "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"; "Desktop")})
text = text(0) & "\Datei.lnk"
Filecopy "I:\Verzeichnis\Datei.lnk", text
Messagebox("''Installation'' erfolgreich durchgeführt!")
Ich hab da auch mal was geschrieben:
Declarations
Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (Byval hKey As Long, Byval lpSubKey As String, phkResult As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (Byval hKey As Long, Byval lpSubKey As String, Byval ulOptions As Long, Byval samDesired As Long, phkResult As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (Byval hKey As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (Byval hKey As Long, Byval lpValueName As String, Byval lpReserved As Long, lpType As Long, Byval lpData As String, lpcbData As Integer) As Long
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (Byval hKey As Long, Byval dwIndex As Long, Byval lpname As String, Byval cbName As Long) As Long
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (Byval hKey As Long, Byval dwIndex As Long, Byval lpname As String, lpcbName As Long, Byval lpReserved As Long, Byval lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
Declare Function RegSetValueEx& Lib "advapi32.dll" Alias "RegSetValueExA" _
(Byval hKey As Long, Byval lpValueName As String, Byval Reserved As Long, Byval _
dwType As Long, Byval lpData As String, Byval cbData As Long)
Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (Byval _
hKey As Long, Byval lpSubKey As String, phkResult As Long)
'-- Constant Definitions for WIN32API
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA = &H80000004
Const SYNCHRONIZE = &H100000
Const STANDARD_RIGHTS_READ = &H20000
Const STANDARD_RIGHTS_WRITE = &H20000
Const STANDARD_RIGHTS_EXECUTE = &H20000
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const STANDARD_RIGHTS_ALL = &H1F0000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = (KEY_READ)
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Const ERROR_SUCCESS = 0&
' Reg Data Types...
Const REG_NONE = 0 ' No value type
Const REG_SZ = 1 ' Unicode nul terminated string
Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string
Const REG_BINARY = 3 ' Free form binary
Const REG_DWORD = 4 ' 32-bit number
Const REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD)
Const REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number
Const REG_LINK = 6 ' Symbolic Link (unicode)
Const REG_MULTI_SZ = 7 ' Multiple Unicode strings
Public Function GetDesktopPath() As String
Dim hKey As Long
Dim lRetType As Long
Dim lpReturnedString As String*127
Dim retSize%
retSize% = 126
res1& = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", 0, KEY_READ, hKey)
If res1& = ERROR_SUCCESS Then
res2& = RegQueryValueEx(hKey, "Desktop", 0, lRetType, lpReturnedString, retSize%)
If res2& = ERROR_SUCCESS Then
GetDesktopPath = Left$(lpReturnedString, retSize%-1)
Exit Function
End If
End If
GetDesktopPath = ""
End Function
Warum so umständlich?
Msgbox Environ("USERPROFILE")