.NET 4.x Не отлавливаемое исключение при использовании неуправляемого кода - C#
Формулировка задачи:
Пытаюсь получить параметры ключа реестра через вызов RegEnumValue
Импортировал так
Использовал так
При проходе отладчиком, без каких либо сообщений программа завершается. Единственное, что намекает на проблему-строка в окне вывода Visual Studio.
[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);
}Вызвано исключение: "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));
}