Задача - определить время последней записи для раздела реестра. Поскольку стандартный класс RegistryKey не предоставляет эту функцию, я должен использовать функцию WinAPI RegQueryInfoKey Чтобы получить ручку ключа, я открываю его с помощью «RegOpenKeyEx».
Это прототип функции WinAPI (взят из MSDN):
LONG WINAPI RegOpenKeyEx(
__in HKEY hKey,
__in LPCTSTR lpSubKey,
DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);
Я использую следующую декларацию:
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int RegOpenKeyEx(UIntPtr hkey, string lpSubKey, uint samDesired, ref UIntPtr phkResult);
Тогда я называю это следующим образом:
UIntPtr hKey = UIntPtr.Zero;
string myKeyName = "blablabla";
UIntPtr HKEY_USERS = (UIntPtr)0x80000003;
uint KEY_READ = 0x20019;
RegOpenKeyEx(HKEY_USERS, myKeyName, KEY_READ, ref hKey);
В этот момент я получаю исключение "Нарушение прав доступа". Что я делаю неправильно?
Я думаю, что что-то не так с передачей параметров, но как это сделать правильно?
Спасибо.