1// Copyright (c) 2013 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// This file provides a parser for PReg files which are used for storing group
6// policy settings in the file system. The file format is documented here:
7//
8// http://msdn.microsoft.com/en-us/library/windows/desktop/aa374407(v=vs.85).aspx
9
10#ifndef COMPONENTS_POLICY_CORE_COMMON_PREG_PARSER_WIN_H_
11#define COMPONENTS_POLICY_CORE_COMMON_PREG_PARSER_WIN_H_
12
13#include <vector>
14
15#include "base/memory/scoped_ptr.h"
16#include "base/strings/string16.h"
17#include "components/policy/policy_export.h"
18
19namespace base {
20class FilePath;
21}
22
23namespace policy {
24
25class PolicyLoadStatusSample;
26class RegistryDict;
27
28namespace preg_parser {
29
30// The magic header in PReg files: ASCII "PReg" + version (0x0001).
31POLICY_EXPORT extern const char kPRegFileHeader[8];
32
33// Reads the PReg file at |file_path| and writes the registry data to |dict|.
34// |root| specifies the registry subtree the caller is interested in,
35// everything else gets ignored.
36POLICY_EXPORT bool ReadFile(const base::FilePath& file_path,
37                            const base::string16& root,
38                            RegistryDict* dict,
39                            PolicyLoadStatusSample* status);
40
41}  // namespace preg_parser
42}  // namespace policy
43
44#endif  // COMPONENTS_POLICY_CORE_COMMON_PREG_PARSER_WIN_H_
45