HomeBlogMagic

C/C++ ändern eines Registry Keys

Folgende Funktion kann genutzt werden um einen Registry Key in Windows zu ändern. Die Funktion muss nur an die eigene Bedürfnisse angepasst werden.

void SetDeviceStateByGuid(const std::wstring& sDeviceGuid, DWORD dwState)
{
  std::wstring sRegistryPath(L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\");
  sRegistryPath.append(sDeviceGuid);
  HKEY hKey;
  LSTATUS lStatus = RegOpenKeyExW(HKEY_LOCAL_MACHINE, sRegistryPath.c_str(), 0, KEY_SET_VALUE | KEY_ENUMERATE_SUB_KEYS, &hKey);
  if (ERROR_SUCCESS == lStatus)
  {
    int i = 0;
    wchar_t pwName[MAX_PATH];
    while (ERROR_SUCCESS == RegEnumKeyW(hKey, i, pwName, MAX_PATH * sizeof(wchar_t)))
    {
      i++;
    }
    RegSetValueExW(hKey, L"DeviceState", 0, REG_DWORD, (LPBYTE) &dwState, sizeof(dwState));
    RegCloseKey(hKey);
  }
  else
  {
    int iError = GetLastError();
    printf("Last error");
  }
}

In diesem Beispiel wird ein AudioDevice kontrolliert, ist als schnelles Copy & Paste Lösung gedacht.

Permalink: https://adirmeier.de/Blog/ID_216
Tags: Blog, C/C++, Registry, Windowsvon am 2018-07-31