.NET 4.x Не отлавливаемое исключение при использовании неуправляемого кода - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь получить параметры ключа реестра через вызов RegEnumValue Импортировал так
 [DllImport("advapi32.dll", EntryPoint = "RegEnumValue")]
  public static extern int RegEnumValueA(
           UIntPtr hKey,
           int dwIndex,
           out string lpValueName,
           out int lpcbValueName,
           int lpReserved,
           out int lpType,
           out IntPtr lpData,
           out int lpcbData);
Использовал так
              
                        int lpcbValueName = 1024, lpType, lpcbData = 1024;
                        IntPtr lpData = Marshal.AllocHGlobal(1024);
                        string lpValueName = "";
                        for (int i = 0; i < ValueCount; i++)
                        {
                            int ValueError = RegEnumValueA(
                                OpenKey,
                                i,
                                out lpValueName,
                                out lpcbValueName,
                                0,
                                out lpType,
                                out lpData,
                                out lpcbData);
                            string dt = Marshal.PtrToStringUni(lpData);
                        }
При проходе отладчиком, без каких либо сообщений программа завершается. Единственное, что намекает на проблему-строка в окне вывода Visual Studio.

Вызвано исключение: "System.AccessViolationException" в mscorlib.dll Программа "[9932] CursProject.vshost.exe" завершилась с кодом -1073741819 (0xc0000005) 'Access violation'.

Каким образом отловить исключение или исправить ошибку?

Решение задачи: «.NET 4.x Не отлавливаемое исключение при использовании неуправляемого кода»

textual
Листинг программы
            var lm = Registry.LocalMachine;
 
            var subKeys = lm.GetSubKeyNames();
 
            var values = lm.GetValueNames();
 
            foreach (var name in subKeys)
            {
                Debug.WriteLine(string.Format("subkey: name {0}", name));
            }
 
            foreach (var name in values)
            {
                Debug.WriteLine("value: type {0}, name {1}, value {2}", lm.GetValueKind(name), name, lm.GetValue(name));
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы