Я пишу приложение на C # для x64, и моя проблема в том, что Я ищу в реестре некоторые ключи, которые содержат определенные ключевые слова , и я могу только искать в реестре x64 приложения из-за перенаправления реестра.
Мне удалось найти какой-то код в сети, но я действительно не знаю, что с ним делать, потому что, насколько я понимаю, это работает, только если я знаю точное имя ключа, когда я ищу шаблоны или ключевые слова.
[DllImport ("advapi32.dll", EntryPoint = "RegOpenKeyEx")]
public static extern int RegOpenKeyEx_DllImport (
UIntPtr hKey,
строка subKey,
варианты uint,
Int Sam,
out IntPtr phkResult);
[DllImport("advapi32.dll", EntryPoint = "RegQueryValueEx")]
static extern int RegQueryValueEx_DllImport(
IntPtr hKey,
string lpValueName,
int lpReserved,
out uint lpType,
System.Text.StringBuilder lpData,
ref uint lpcbData);
public string GetKeyValue(string strSubKey, string strKey)
{
UIntPtr HKEY_LOCAL_MACHINE = (UIntPtr)0x80000002;
const int KEY_WOW64_32KEY = 0x0200;
const int KEY_QUERY_VALUE = 0x1;
IntPtr hKeyVal;
uint lpType;
uint lpcbData = 0;
System.Text.StringBuilder pvData = new System.Text.StringBuilder(1024);
int valueRet;
string returnPath = String.Empty;
unchecked
{
try
{ //Open the required key path
valueRet = RegOpenKeyEx_DllImport(HKEY_LOCAL_MACHINE, strSubKey, 0, KEY_QUERY_VALUE | KEY_WOW64_32KEY, out hKeyVal);
//Retreive the key value
valueRet = RegQueryValueEx_DllImport(hKeyVal, strKey, 0, out lpType, pvData, ref lpcbData);
valueRet = RegQueryValueEx_DllImport(hKeyVal, strKey, 0, out lpType, pvData, ref lpcbData);
returnPath = pvData.ToString();
}
catch (Exception e)
{
throw (e);
}
}
return returnPath;
}