---
title: "REG_DWORD"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/72124-reg-dword"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "firstchoice"
published: "2003-03-25T14:00:48.000Z"
updated: "2003-03-26T13:12:10.000Z"
replies: 19
views: 373
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/72124-reg-dword"
---

# REG_DWORD

## #1 — firstchoice, 2003-03-25T14:00Z

hur sparar jag ett REG_DWORD
får inte rätt på vilken typ var värde jag skall skicka in

```
RegSetValueEx(hOpenKey, sKey, 0, REG_DWORD, Value, lBytes)
```

vad skall Value vara för något? Long?

Permalänk: https://www.webforum.nu/p/72124

## #2 — niko, 2003-03-25T14:15Z

> vad skall Value vara för något? Long?

Ja, precis. DWORD=Double Word. Word = 2Byte-\>DWORD=4 Bytes=Long.

Exempel:

```
Dim Value as long
Value=7 'Tex
RegSetValueEx(hOpenKey, sKey, 0, REG_DWORD, Value, 4)
```

Permalänk: https://www.webforum.nu/p/990453

## #3 — firstchoice, 2003-03-25T14:48Z

funkar ändå inte :(
det står (invalid DWORD value) i registret

Permalänk: https://www.webforum.nu/p/990470

## #4 — firstchoice, 2003-03-25T14:49Z

detta är väl rätt?

```
Const REG_DWORD As Long = 4
```

Permalänk: https://www.webforum.nu/p/990471

## #5 — niko, 2003-03-25T14:59Z

Konstigt. Jag har inga problem. Brukar använda denna funktion:

```
Function SaveDword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long)
    Dim lResult As Long
    Dim keyhand As Long
    Dim r As Long
    r = RegCreateKey(Hkey, strPath, keyhand)
    lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
    r = RegCloseKey(keyhand)
End Function
```

Hur ser din deklaration av *RegSetValueEx* ut? Du har väl inte ByVal vid femte parametern? Isåf måste du anropa med:

```
RegSetValueEx(hOpenKey, sKey, 0, REG_DWORD, VarPtr(Value), 4)
```

> detta är väl rätt?

Ja.

Permalänk: https://www.webforum.nu/p/990495

## #6 — firstchoice, 2003-03-25T15:06Z

så här ser deklarationen ut

```
Public 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
```

skall genast testa VarPtr(Value)

Permalänk: https://www.webforum.nu/p/990508

## #7 — firstchoice, 2003-03-25T15:08Z

samma skit!
får kanske göra en egen funktion för DWORD

ville igentligen har en funktion som klarade allt

Permalänk: https://www.webforum.nu/p/990511

## #8 — niko, 2003-03-25T15:37Z

Använd:

```
ByVal lpData As [b]Any[/b]
```

och anropa med VarPtr(Value). Det bör funka.

Eller:

```
lpData As [b]Any[/b]
```

och anropa enbart med Value.

Permalänk: https://www.webforum.nu/p/990540

## #9 — firstchoice, 2003-03-26T08:59Z

niko: testar din funktion nu, funkar bra
men vad skall jag skicka in om jag vill få fram det Hexadecimala talet "2000000" i registret

Permalänk: https://www.webforum.nu/p/990992

## #10 — niko, 2003-03-26T09:23Z

Lite osäker på vad du menar. Om du vill *spara* det hexadecimal talet 2000000 så:

```
Value=&H2000000
RegSetValueEx(hOpenKey, sKey, 0, REG_DWORD, Value, 4)
```

Permalänk: https://www.webforum.nu/p/991002

## #11 — firstchoice, 2003-03-26T09:46Z

så här vill jag att det skall se ut i registret efter jag kört funktionen!

Permalänk: https://www.webforum.nu/p/991011

## #12 — firstchoice, 2003-03-26T09:47Z

:)

Bilagor:

- [registry.jpg](https://www.webforum.nu/a/1216.jpg)

Permalänk: https://www.webforum.nu/p/991012

## #13 — niko, 2003-03-26T09:55Z

OK. Men då ska du göra som jag skrev. *Base* har inget med registret att göra det är ett visningsläge i *programmet regedit*. Det är alltså inget du kan påverka från kod (vad jag vet).

Permalänk: https://www.webforum.nu/p/991020

## #14 — firstchoice, 2003-03-26T10:12Z

men gör jag som du sak

> Value=&H2000000
> RegSetValueEx(hOpenKey, sKey, 0, REG_DWORD, Value, 4)

så blir det så här!

Bilagor:

- [registry.jpg](https://www.webforum.nu/a/1217.jpg)

Permalänk: https://www.webforum.nu/p/991032

## #15 — niko, 2003-03-26T10:29Z

Öh? Det skulle jag vilja hävda är omöjligt. Öppnar du verkligen nyckeln innan du skriver så att det inte är ett gammalt värde du ser? Använder du funktionen *SaveDword* ovan?

Permalänk: https://www.webforum.nu/p/991045

## #16 — firstchoice, 2003-03-26T10:35Z

Yes jag använder SaveDword som du bifogade!

Permalänk: https://www.webforum.nu/p/991051

## #17 — niko, 2003-03-26T11:00Z

Om din deklaration av RegSetValueEx ser ut ungefär så här:

```
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
```

och din deklaration av SaveDword ser ut så här:

```
Function SaveDword(ByVal Hkey As Long, ByVal strPath As String, _
ByVal strValueName As String, ByVal lData As Long)
    Dim lResult As Long
    Dim keyhand As Long
    Dim r As Long
    r = RegCreateKey(Hkey, strPath, keyhand)
    lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
    r = RegCloseKey(keyhand)
End Function
```

och du anropar ungefär så här:

```
    Dim value As Long
    value = &H2000000
    SaveDword HKEY_LOCAL_MACHINE, "Software\Whatever", "MAXPOSTSIZE", value
```

så kan du inte få det resultatet. Det är nåt som inte stämmer. Kolla igenom din kod.

Permalänk: https://www.webforum.nu/p/991068

## #18 — firstchoice, 2003-03-26T12:26Z

hehe  :e 

nu funkar det!

hade deklarerat RegSetValueEx så här

```
ByVal lpData As String
```

och inte

```
ByVal lpData As Any
```

men det går bra nu att skicka in strängar också va?
alltså till RegSetValueEx  ?

Permalänk: https://www.webforum.nu/p/991143

## #19 — firstchoice, 2003-03-26T12:57Z

nu börjar jag bli tosig!!!!!!!!!

kör jag
**ByVal lpData As Any**
funkar det bra med vanliga sträng värden
men skall jag ha ett DWORD får jag ändra till bara
**lpData As Any**
men då får stängvärdena fel värde...
vad fan skall man göra

Permalänk: https://www.webforum.nu/p/991163

## #20 — niko, 2003-03-26T13:12Z

Kanske .. Kanske inte .. Det beror helt på hur man gör.

Brukar själv deklarera utan ByVal:

```
lpData As Any
```

Och sen ange Byval för strängar i anropet:

```
r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
```

men inte för DWORDS:

```
lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
```

Om du deklarerar *med* ByVal så borde du anropa så här:

```
r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, strdata, Len(strdata))
```

```
lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, VarPtr(lData), 4)
```

Tycker jag. Men jag kan ha fel ..?

/red: Jag svarade innan ditt inlägg. Men du fattar poängen?

Permalänk: https://www.webforum.nu/p/991175

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/72124-reg-dword
