Home | History | Annotate | Download | only in util
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_INSTALLER_UTIL_DELETE_REG_KEY_WORK_ITEM_H_
      6 #define CHROME_INSTALLER_UTIL_DELETE_REG_KEY_WORK_ITEM_H_
      7 
      8 #include <windows.h>
      9 
     10 #include <string>
     11 
     12 #include "base/basictypes.h"
     13 #include "base/compiler_specific.h"
     14 #include "chrome/installer/util/registry_key_backup.h"
     15 #include "chrome/installer/util/work_item.h"
     16 
     17 class RegistryKeyBackup;
     18 
     19 // A WorkItem subclass that deletes a registry key at the given path.  Be aware
     20 // that in the event of rollback the key's values and subkeys are restored but
     21 // the key and its subkeys take on their default security descriptors.
     22 class DeleteRegKeyWorkItem : public WorkItem {
     23  public:
     24   virtual ~DeleteRegKeyWorkItem();
     25 
     26   virtual bool Do() OVERRIDE;
     27 
     28   virtual void Rollback() OVERRIDE;
     29 
     30  private:
     31   friend class WorkItem;
     32 
     33   DeleteRegKeyWorkItem(HKEY predefined_root,
     34                        const std::wstring& path,
     35                        REGSAM wow64_access);
     36 
     37   // Root key from which we delete the key. The root key can only be
     38   // one of the predefined keys on Windows.
     39   HKEY predefined_root_;
     40 
     41   // Path of the key to be deleted.
     42   std::wstring path_;
     43 
     44   // Whether to force 32-bit or 64-bit view of the target key.
     45   REGSAM wow64_access_;
     46 
     47   // Backup of the deleted key.
     48   RegistryKeyBackup backup_;
     49 
     50   DISALLOW_COPY_AND_ASSIGN(DeleteRegKeyWorkItem);
     51 };
     52 
     53 #endif  // CHROME_INSTALLER_UTIL_DELETE_REG_KEY_WORK_ITEM_H_
     54