| OLD | NEW | 
|---|
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // All Rights Reserved. | 4 // All Rights Reserved. | 
| 5 | 5 | 
| 6 #include "base/registry.h" | 6 #include "base/registry.h" | 
| 7 | 7 | 
| 8 #include <assert.h> | 8 #include <assert.h> | 
| 9 #include <shlwapi.h> | 9 #include <shlwapi.h> | 
| 10 #include <windows.h> | 10 #include <windows.h> | 
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 344 } | 344 } | 
| 345 | 345 | 
| 346 | 346 | 
| 347 bool RegKey::DeleteValue(const tchar * value_name) { | 347 bool RegKey::DeleteValue(const tchar * value_name) { | 
| 348   assert(value_name); | 348   assert(value_name); | 
| 349   HRESULT const result = RegDeleteValue(key_, value_name); | 349   HRESULT const result = RegDeleteValue(key_, value_name); | 
| 350   return (result == ERROR_SUCCESS); | 350   return (result == ERROR_SUCCESS); | 
| 351 } | 351 } | 
| 352 | 352 | 
| 353 bool RegKey::StartWatching() { | 353 bool RegKey::StartWatching() { | 
| 354   assert(watch_event_ == 0); | 354   if (!watch_event_) | 
| 355   watch_event_ = CreateEvent(NULL, TRUE, FALSE, NULL); | 355     watch_event_ = CreateEvent(NULL, TRUE, FALSE, NULL); | 
|  | 356 | 
| 356   DWORD filter = REG_NOTIFY_CHANGE_NAME | | 357   DWORD filter = REG_NOTIFY_CHANGE_NAME | | 
| 357                  REG_NOTIFY_CHANGE_ATTRIBUTES | | 358                  REG_NOTIFY_CHANGE_ATTRIBUTES | | 
| 358                  REG_NOTIFY_CHANGE_LAST_SET | | 359                  REG_NOTIFY_CHANGE_LAST_SET | | 
| 359                  REG_NOTIFY_CHANGE_SECURITY; | 360                  REG_NOTIFY_CHANGE_SECURITY; | 
| 360 | 361 | 
| 361   // Watch the registry key for a change of value. | 362   // Watch the registry key for a change of value. | 
| 362   HRESULT result = RegNotifyChangeKeyValue(key_, TRUE, filter, | 363   HRESULT result = RegNotifyChangeKeyValue(key_, TRUE, filter, | 
| 363                                            watch_event_, TRUE); | 364                                            watch_event_, TRUE); | 
| 364   if (SUCCEEDED(result)) { | 365   if (SUCCEEDED(result)) { | 
| 365     return true; | 366     return true; | 
| 366   } else { | 367   } else { | 
| 367     CloseHandle(watch_event_); | 368     CloseHandle(watch_event_); | 
| 368     watch_event_ = 0; | 369     watch_event_ = 0; | 
| 369     return false; | 370     return false; | 
| 370   } | 371   } | 
| 371 } | 372 } | 
| 372 | 373 | 
| 373 bool RegKey::StopWatching() { | 374 bool RegKey::StopWatching() { | 
| 374   if (watch_event_) { | 375   if (watch_event_) { | 
| 375     CloseHandle(watch_event_); | 376     CloseHandle(watch_event_); | 
| 376     watch_event_ = 0; | 377     watch_event_ = 0; | 
| 377     return true; | 378     return true; | 
| 378   } | 379   } | 
| 379   return false; | 380   return false; | 
| 380 } | 381 } | 
| 381 | 382 | 
| 382 bool RegKey::HasChanged() { | 383 bool RegKey::HasChanged() { | 
| 383   if (watch_event_) { | 384   if (watch_event_) { | 
| 384     if (WaitForSingleObject(watch_event_, 0) == WAIT_OBJECT_0) { | 385     if (WaitForSingleObject(watch_event_, 0) == WAIT_OBJECT_0) { | 
| 385       // An event only gets signaled once, then it's done, so we have |  | 
| 386       // to set up another event to watch. |  | 
| 387       CloseHandle(watch_event_); |  | 
| 388       watch_event_ = 0; |  | 
| 389       StartWatching(); | 386       StartWatching(); | 
| 390       return true; | 387       return true; | 
| 391     } | 388     } | 
| 392   } | 389   } | 
| 393   return false; | 390   return false; | 
| 394 } | 391 } | 
| 395 | 392 | 
| 396 // Register a COM object with the most usual properties. | 393 // Register a COM object with the most usual properties. | 
| 397 bool RegisterCOMServer(const tchar* guid, | 394 bool RegisterCOMServer(const tchar* guid, | 
| 398                        const tchar* name, | 395                        const tchar* name, | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 411   ::GetModuleFileName(module, module_path, MAX_PATH); | 408   ::GetModuleFileName(module, module_path, MAX_PATH); | 
| 412   _tcslwr_s(module_path, MAX_PATH); | 409   _tcslwr_s(module_path, MAX_PATH); | 
| 413   return RegisterCOMServer(guid, name, module_path); | 410   return RegisterCOMServer(guid, name, module_path); | 
| 414 } | 411 } | 
| 415 | 412 | 
| 416 bool UnregisterCOMServer(const tchar* guid) { | 413 bool UnregisterCOMServer(const tchar* guid) { | 
| 417   RegKey key(HKEY_CLASSES_ROOT, _T("CLSID"), KEY_WRITE); | 414   RegKey key(HKEY_CLASSES_ROOT, _T("CLSID"), KEY_WRITE); | 
| 418   key.DeleteKey(guid); | 415   key.DeleteKey(guid); | 
| 419   return true; | 416   return true; | 
| 420 } | 417 } | 
| OLD | NEW | 
|---|