diff options
author | simonmorris@chromium.org <simonmorris@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-31 15:05:22 +0000 |
---|---|---|
committer | simonmorris@chromium.org <simonmorris@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-31 15:05:22 +0000 |
commit | 5693a021b0a86ead1a2f1d8431c9f85ff3fe7bbd (patch) | |
tree | d501f173aedcc8ab45716894b561aa5e8d64c05b /remoting | |
parent | a57acea58a356605123ef9c8061dae0162918f6a (diff) | |
download | chromium_src-5693a021b0a86ead1a2f1d8431c9f85ff3fe7bbd.zip chromium_src-5693a021b0a86ead1a2f1d8431c9f85ff3fe7bbd.tar.gz chromium_src-5693a021b0a86ead1a2f1d8431c9f85ff3fe7bbd.tar.bz2 |
[Chromoting] Let the Windows host policy watcher read string-valued policies.
BUG=132684
Review URL: https://chromiumcodereview.appspot.com/10832071
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149184 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting')
-rw-r--r-- | remoting/host/policy_hack/policy_watcher_win.cc | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/remoting/host/policy_hack/policy_watcher_win.cc b/remoting/host/policy_hack/policy_watcher_win.cc index 9f3b5e4..fba75f0 100644 --- a/remoting/host/policy_hack/policy_watcher_win.cc +++ b/remoting/host/policy_hack/policy_watcher_win.cc @@ -112,18 +112,43 @@ class PolicyWatcherWin : } } - bool GetRegistryPolicyInteger(const string16& value_name, + bool GetRegistryPolicyString(const std::string& value_name, + std::string* result) const { + std::wstring value_name_wide = UTF8ToWide(value_name); + std::wstring value; + RegKey policy_key(HKEY_LOCAL_MACHINE, kRegistrySubKey, KEY_READ); + if (policy_key.ReadValue(value_name_wide.c_str(), &value) == + ERROR_SUCCESS) { + *result = WideToUTF8(value); + return true; + } + + if (policy_key.Open(HKEY_CURRENT_USER, kRegistrySubKey, KEY_READ) == + ERROR_SUCCESS) { + if (policy_key.ReadValue(value_name_wide.c_str(), &value) == + ERROR_SUCCESS) { + *result = WideToUTF8(value); + return true; + } + } + return false; + } + + bool GetRegistryPolicyInteger(const std::string& value_name, uint32* result) const { + std::wstring value_name_wide = UTF8ToWide(value_name); DWORD value = 0; RegKey policy_key(HKEY_LOCAL_MACHINE, kRegistrySubKey, KEY_READ); - if (policy_key.ReadValueDW(value_name.c_str(), &value) == ERROR_SUCCESS) { + if (policy_key.ReadValueDW(value_name_wide.c_str(), &value) == + ERROR_SUCCESS) { *result = value; return true; } if (policy_key.Open(HKEY_CURRENT_USER, kRegistrySubKey, KEY_READ) == ERROR_SUCCESS) { - if (policy_key.ReadValueDW(value_name.c_str(), &value) == ERROR_SUCCESS) { + if (policy_key.ReadValueDW(value_name_wide.c_str(), &value) == + ERROR_SUCCESS) { *result = value; return true; } @@ -131,7 +156,7 @@ class PolicyWatcherWin : return false; } - bool GetRegistryPolicyBoolean(const string16& value_name, + bool GetRegistryPolicyBoolean(const std::string& value_name, bool* result) const { uint32 local_result = 0; bool ret = GetRegistryPolicyInteger(value_name, &local_result); @@ -146,13 +171,17 @@ class PolicyWatcherWin : for (int i = 0; i < kBooleanPolicyNamesNum; ++i) { const char* policy_name = kBooleanPolicyNames[i]; bool bool_value; - const string16 name(ASCIIToUTF16(policy_name)); - if (GetRegistryPolicyBoolean(name, &bool_value)) { + if (GetRegistryPolicyBoolean(policy_name, &bool_value)) { policy->SetBoolean(policy_name, bool_value); } } - // TODO(simonmorris): Read policies whose names are in kStringPolicyNames. - + for (int i = 0; i < kStringPolicyNamesNum; ++i) { + const char* policy_name = kStringPolicyNames[i]; + std::string string_value; + if (GetRegistryPolicyString(policy_name, &string_value)) { + policy->SetString(policy_name, string_value); + } + } return policy; } |