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.