Я пытаюсь создать раздел реестра, используя функцию RegCreateKeyExA. Я очень плохо знаком с C#, поэтому могу ошибаться, но я пришел к выводу, что первый аргумент - это IntPtr. Проблема в том, что я не знаю, как работать с типом данных IntPtr, и меня немного переполняют все различные темы, которые я нашел по этому вопросу. Мне нужны некоторые пояснения относительно типов данных, которые я должен использовать и как с ними обращаться. Вот мой код:
using System;
using System.Runtime.InteropServices;
namespace Win32Application
{
public class Win32
{
public static uint KEY_CREATE_SUB_KEY = 4;
public static uint HKEY_CURRENT_USER = 80000001;
public static uint REG_OPTION_NON_VOLATILE = 0;
[DllImport("Advapi32.dll", CharSet = CharSet.Ansi)]
public static extern int RegCreateKeyExA(IntPtr hKey, string lpSubKey, uint Reserved,
string lpClass, uint dwOptions, uint samDesired, ref SECURITY_ATTRIBUTES lpSecurityAttributes,
ref uint phkResult, ref uint lpdwDisposition);
public struct SECURITY_ATTRIBUTES
{
ulong nLenght;
IntPtr lpSecurityDescriptor;
bool bInheritHandle;
}
static void Main()
{
uint result = 0;
uint created_or_existing = 0;
string subKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
SECURITY_ATTRIBUTES secAttrs = new SECURITY_ATTRIBUTES();
RegCreateKeyExA(ref HKEY_CURRENT_USER, subKey, 0, null, REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY, ref secAttrs, ref result, ref created_or_existing);
}
}
}