Vad menar du men en annan dator? Över nätverk eller?
Skapa nyklar i registret
9 svar · 237 visningar · startad av firstchoice
firstchoice skrev:
är detta möjligt?
Ja, i den mån den andra maskinen har sin "Remote Registry Service" startad och du har tillräckliga rättigheter så går det alldeles utmärkt. RegConnectRegistry heter API:et.
har en applikation på er server som skall kunna lägga till nyklar i en annan servers register
om jag har en "RegOpenKey" då kan jag väl byta ut den mot "RegConnectRegistry" ??
någon som kan ge exempel i så fall
Nej, du anropar RegConnectRegistry först och skickar sedan in handtaget som förstaparameter i RegOpenKey.
Kolla funktionen ReadRemoteReg på denna sida: http://www.andreavb.com/tip080007.html så ser du ungefär hur du ska göra.
Glöm sedan inte rättigheterna. Om du startar Regedit lokalt och väljer Registry->Connect Network Registry kan du testa vilka skrivrättigheter du har på fjärrdatorn.
tack för hjälpen!
får se om jag förstår något :)
niko kanske kan ge mig ett exempel på kod ?
Works for me:
Option Explicit
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_USERS = &H80000003
Private Const HKEY_PERFORMANCE_DATA = &H80000004
Private Const HKEY_DYN_DATA = &H80000006
Private Const HKEY_CURRENT_CONFIG = &H80000005
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_EVENT = &H1
Private Const KEY_NOTIFY = &H10
Private Const READ_CONTROL = &H20000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Private 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))
Private Const REG_SZ = 1
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private 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
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 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) As Long
Private Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" _
(ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
Private Sub Command1_Click()
Dim lhRemoteRegistry As Long, res As Long
Dim keyhand As Long
res = RegConnectRegistry("\\andradatornsnamn", HKEY_LOCAL_MACHINE, lhRemoteRegistry)
res = RegCreateKey(lhRemoteRegistry, "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Tips", keyhand)
Dim strValue As String
strValue = "0" 'Namnet på nyckeln.
Dim strdata As String 'Det vi vill skriva.
strdata = "Visste du att man kan ändra i andras registernycklar?"
res = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
res = RegCloseKey(keyhand)
End Sub
Nu förutsätter jag att det är ett strängvärde du vill ändra (REG_SZ ).
tack! fick det att funka!
nu är det DeleteKey som skall göras