Пишите в реестр используя P / Invoke - PullRequest
4 голосов
/ 06 мая 2011

Мне нужно изменить значение регистра в WindowsCE, используя c # и P / Invoke (RapiDll там отсутствует)

Я знаю, как читать ключ:

private static string ReadRegKey(UIntPtr rootKey, string keyPath, string valueName,string value)
    {
        IntPtr hKey = IntPtr.Zero;
        if (RegOpenKeyEx(rootKey, keyPath, 0, KEY_READ, out hKey) == 0)
        {
            uint size = 1024;
            uint type = 0;
            string keyValue = null;
            StringBuilder keyBuffer = new StringBuilder();
            keyBuffer.Append(value);

            if (RegQueryValueEx(hKey, valueName, IntPtr.Zero, ref type, keyBuffer, ref size) == 0)
                keyValue = keyBuffer.ToString();

            RegCloseKey(hKey);

            return (keyValue);
        }

        return (null);  // Return null if the value could not be read
    }

Может ли кто-нибудь помочь мне с этим? (Это для изменения названия устройства между прочим)

Ответы [ 3 ]

4 голосов
/ 06 мая 2011
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WJST\WLAN", true); 

// set value of "CDInsert" to 1
reg.SetValue("CDInsert", 1, RegistryValueKind.DWord);

// get value of "CDInsert"; return 0 if value not found
int value = (int)reg.GetValue("CDInsert", 0);
0 голосов
/ 10 марта 2014

Если вы намереваетесь записать / прочитать / запросить значения реестра, которые не находятся внутри узла wow6432, и если вы используете framework ниже 4.0, вам нужен тип RegistryEX P / Invoke dll's

например, если вы запускаете 32-битное приложение в 64-битном приложении, из-за виртуализации реестр будет находиться под 32-битным узлом. Если вам нужно создать его под 64-битным, то вам нужно использовать эти p / invokes

Надеюсь и желаю вам успеха

0 голосов
/ 06 мая 2011

Почему вы не хотите использовать класс RegistryKey из пространства имен Microsoft.Win32?

http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey%28v=VS.80%29.aspx

...