OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/policy/configuration_policy_provider_win.h" | 5 #include "chrome/browser/policy/configuration_policy_provider_win.h" |
6 | 6 |
7 #include <userenv.h> | 7 #include <userenv.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 | 55 |
56 ConfigurationPolicyProviderWin::ConfigurationPolicyProviderWin() { | 56 ConfigurationPolicyProviderWin::ConfigurationPolicyProviderWin() { |
57 watcher_.reset(new GroupPolicyChangeWatcher(this)); | 57 watcher_.reset(new GroupPolicyChangeWatcher(this)); |
58 } | 58 } |
59 | 59 |
60 bool ConfigurationPolicyProviderWin::GetRegistryPolicyString( | 60 bool ConfigurationPolicyProviderWin::GetRegistryPolicyString( |
61 const string16& name, string16* result) { | 61 const string16& name, string16* result) { |
62 string16 path = string16(policy::kRegistrySubKey); | 62 string16 path = string16(policy::kRegistrySubKey); |
63 RegKey policy_key; | 63 RegKey policy_key; |
64 // First try the global policy. | 64 // First try the global policy. |
65 if (policy_key.Open(HKEY_LOCAL_MACHINE, path.c_str())) { | 65 if (policy_key.Open(HKEY_LOCAL_MACHINE, path.c_str(), KEY_READ)) { |
66 if (ReadRegistryStringValue(&policy_key, name, result)) | 66 if (ReadRegistryStringValue(&policy_key, name, result)) |
67 return true; | 67 return true; |
68 policy_key.Close(); | 68 policy_key.Close(); |
69 } | 69 } |
70 // Fall back on user-specific policy. | 70 // Fall back on user-specific policy. |
71 if (!policy_key.Open(HKEY_CURRENT_USER, path.c_str())) | 71 if (!policy_key.Open(HKEY_CURRENT_USER, path.c_str(), KEY_READ)) |
72 return false; | 72 return false; |
73 return ReadRegistryStringValue(&policy_key, name, result); | 73 return ReadRegistryStringValue(&policy_key, name, result); |
74 } | 74 } |
75 | 75 |
76 bool ConfigurationPolicyProviderWin::ReadRegistryStringValue( | 76 bool ConfigurationPolicyProviderWin::ReadRegistryStringValue( |
77 RegKey* key, const string16& name, string16* result) { | 77 RegKey* key, const string16& name, string16* result) { |
78 DWORD value_size = 0; | 78 DWORD value_size = 0; |
79 DWORD key_type = 0; | 79 DWORD key_type = 0; |
80 scoped_array<uint8> buffer; | 80 scoped_array<uint8> buffer; |
81 | 81 |
(...skipping 11 matching lines...) Expand all Loading... |
93 key->ReadValue(name.c_str(), buffer.get(), &value_size); | 93 key->ReadValue(name.c_str(), buffer.get(), &value_size); |
94 result->assign(reinterpret_cast<const wchar_t*>(buffer.get())); | 94 result->assign(reinterpret_cast<const wchar_t*>(buffer.get())); |
95 return true; | 95 return true; |
96 } | 96 } |
97 | 97 |
98 bool ConfigurationPolicyProviderWin::GetRegistryPolicyStringList( | 98 bool ConfigurationPolicyProviderWin::GetRegistryPolicyStringList( |
99 const string16& key, ListValue* result) { | 99 const string16& key, ListValue* result) { |
100 string16 path = string16(policy::kRegistrySubKey); | 100 string16 path = string16(policy::kRegistrySubKey); |
101 path += ASCIIToUTF16("\\") + key; | 101 path += ASCIIToUTF16("\\") + key; |
102 RegKey policy_key; | 102 RegKey policy_key; |
103 if (!policy_key.Open(HKEY_LOCAL_MACHINE, path.c_str())) { | 103 if (!policy_key.Open(HKEY_LOCAL_MACHINE, path.c_str(), KEY_READ)) { |
104 policy_key.Close(); | 104 policy_key.Close(); |
105 // Fall back on user-specific policy. | 105 // Fall back on user-specific policy. |
106 if (!policy_key.Open(HKEY_CURRENT_USER, path.c_str())) | 106 if (!policy_key.Open(HKEY_CURRENT_USER, path.c_str(), KEY_READ)) |
107 return false; | 107 return false; |
108 } | 108 } |
109 string16 policy_string; | 109 string16 policy_string; |
110 int index = 0; | 110 int index = 0; |
111 while (ReadRegistryStringValue(&policy_key, base::IntToString16(++index), | 111 while (ReadRegistryStringValue(&policy_key, base::IntToString16(++index), |
112 &policy_string)) { | 112 &policy_string)) { |
113 result->Append(Value::CreateStringValue(policy_string)); | 113 result->Append(Value::CreateStringValue(policy_string)); |
114 } | 114 } |
115 return true; | 115 return true; |
116 } | 116 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 break; | 188 break; |
189 } | 189 } |
190 default: | 190 default: |
191 NOTREACHED(); | 191 NOTREACHED(); |
192 return false; | 192 return false; |
193 } | 193 } |
194 } | 194 } |
195 | 195 |
196 return true; | 196 return true; |
197 } | 197 } |
OLD | NEW |