diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-08-08 18:02:15 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-08-09 09:57:02 -0500 |
commit | 240b663ad5fc94ed6d19c966b5c9105a176ecf40 (patch) | |
tree | d194e242ccb5bb69f0dbbc388ede87cef65c700f /src/libs/dutil/WixToolset.DUtil/polcutil.cpp | |
parent | 8e1cbe8d7b468553d76c20452561e89726de5c47 (diff) | |
download | wix-240b663ad5fc94ed6d19c966b5c9105a176ecf40.tar.gz wix-240b663ad5fc94ed6d19c966b5c9105a176ecf40.tar.bz2 wix-240b663ad5fc94ed6d19c966b5c9105a176ecf40.zip |
Skip logging errors in some places when they are due to missing files or registry keys or values.
Related to 6696
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/polcutil.cpp')
-rw-r--r-- | src/libs/dutil/WixToolset.DUtil/polcutil.cpp | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/polcutil.cpp b/src/libs/dutil/WixToolset.DUtil/polcutil.cpp index c2247bc1..a56c380b 100644 --- a/src/libs/dutil/WixToolset.DUtil/polcutil.cpp +++ b/src/libs/dutil/WixToolset.DUtil/polcutil.cpp | |||
@@ -16,6 +16,7 @@ | |||
16 | #define PolcExitOnInvalidHandleWithLastError(p, x, s, ...) ExitOnInvalidHandleWithLastErrorSource(DUTIL_SOURCE_POLCUTIL, p, x, s, __VA_ARGS__) | 16 | #define PolcExitOnInvalidHandleWithLastError(p, x, s, ...) ExitOnInvalidHandleWithLastErrorSource(DUTIL_SOURCE_POLCUTIL, p, x, s, __VA_ARGS__) |
17 | #define PolcExitOnWin32Error(e, x, s, ...) ExitOnWin32ErrorSource(DUTIL_SOURCE_POLCUTIL, e, x, s, __VA_ARGS__) | 17 | #define PolcExitOnWin32Error(e, x, s, ...) ExitOnWin32ErrorSource(DUTIL_SOURCE_POLCUTIL, e, x, s, __VA_ARGS__) |
18 | #define PolcExitOnGdipFailure(g, x, s, ...) ExitOnGdipFailureSource(DUTIL_SOURCE_POLCUTIL, g, x, s, __VA_ARGS__) | 18 | #define PolcExitOnGdipFailure(g, x, s, ...) ExitOnGdipFailureSource(DUTIL_SOURCE_POLCUTIL, g, x, s, __VA_ARGS__) |
19 | #define PolcExitOnPathFailure(x, b, s, ...) ExitOnPathFailureSource(DUTIL_SOURCE_POLCUTIL, x, b, s, __VA_ARGS__) | ||
19 | 20 | ||
20 | const LPCWSTR REGISTRY_POLICIES_KEY = L"SOFTWARE\\Policies\\"; | 21 | const LPCWSTR REGISTRY_POLICIES_KEY = L"SOFTWARE\\Policies\\"; |
21 | 22 | ||
@@ -34,25 +35,28 @@ extern "C" HRESULT DAPI PolcReadNumber( | |||
34 | { | 35 | { |
35 | HRESULT hr = S_OK; | 36 | HRESULT hr = S_OK; |
36 | HKEY hk = NULL; | 37 | HKEY hk = NULL; |
38 | BOOL fExists = FALSE; | ||
37 | 39 | ||
38 | hr = OpenPolicyKey(wzPolicyPath, &hk); | 40 | hr = OpenPolicyKey(wzPolicyPath, &hk); |
39 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | 41 | PolcExitOnFailure(hr, "Failed to open policy key: %ls", wzPolicyPath); |
42 | |||
43 | if (!hk) | ||
40 | { | 44 | { |
41 | ExitFunction1(hr = S_FALSE); | 45 | ExitFunction1(hr = S_FALSE); |
42 | } | 46 | } |
43 | PolcExitOnFailure(hr, "Failed to open policy key: %ls", wzPolicyPath); | ||
44 | 47 | ||
45 | hr = RegReadNumber(hk, wzPolicyName, pdw); | 48 | hr = RegReadNumber(hk, wzPolicyName, pdw); |
46 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | 49 | PolcExitOnPathFailure(hr, fExists, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); |
50 | |||
51 | if (!fExists) | ||
47 | { | 52 | { |
48 | ExitFunction1(hr = S_FALSE); | 53 | ExitFunction1(hr = S_FALSE); |
49 | } | 54 | } |
50 | PolcExitOnFailure(hr, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); | ||
51 | 55 | ||
52 | LExit: | 56 | LExit: |
53 | ReleaseRegKey(hk); | 57 | ReleaseRegKey(hk); |
54 | 58 | ||
55 | if (S_FALSE == hr || FAILED(hr)) | 59 | if (!fExists) |
56 | { | 60 | { |
57 | *pdw = dwDefault; | 61 | *pdw = dwDefault; |
58 | } | 62 | } |
@@ -69,25 +73,28 @@ extern "C" HRESULT DAPI PolcReadString( | |||
69 | { | 73 | { |
70 | HRESULT hr = S_OK; | 74 | HRESULT hr = S_OK; |
71 | HKEY hk = NULL; | 75 | HKEY hk = NULL; |
76 | BOOL fExists = FALSE; | ||
72 | 77 | ||
73 | hr = OpenPolicyKey(wzPolicyPath, &hk); | 78 | hr = OpenPolicyKey(wzPolicyPath, &hk); |
74 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | 79 | PolcExitOnFailure(hr, "Failed to open policy key: %ls", wzPolicyPath); |
80 | |||
81 | if (!hk) | ||
75 | { | 82 | { |
76 | ExitFunction1(hr = S_FALSE); | 83 | ExitFunction1(hr = S_FALSE); |
77 | } | 84 | } |
78 | PolcExitOnFailure(hr, "Failed to open policy key: %ls", wzPolicyPath); | ||
79 | 85 | ||
80 | hr = RegReadString(hk, wzPolicyName, pscz); | 86 | hr = RegReadString(hk, wzPolicyName, pscz); |
81 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | 87 | PolcExitOnPathFailure(hr, fExists, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); |
88 | |||
89 | if (!fExists) | ||
82 | { | 90 | { |
83 | ExitFunction1(hr = S_FALSE); | 91 | ExitFunction1(hr = S_FALSE); |
84 | } | 92 | } |
85 | PolcExitOnFailure(hr, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); | ||
86 | 93 | ||
87 | LExit: | 94 | LExit: |
88 | ReleaseRegKey(hk); | 95 | ReleaseRegKey(hk); |
89 | 96 | ||
90 | if (S_FALSE == hr || FAILED(hr)) | 97 | if (!fExists) |
91 | { | 98 | { |
92 | if (NULL == wzDefault) | 99 | if (NULL == wzDefault) |
93 | { | 100 | { |
@@ -112,25 +119,28 @@ extern "C" HRESULT DAPI PolcReadUnexpandedString( | |||
112 | { | 119 | { |
113 | HRESULT hr = S_OK; | 120 | HRESULT hr = S_OK; |
114 | HKEY hk = NULL; | 121 | HKEY hk = NULL; |
122 | BOOL fExists = FALSE; | ||
115 | 123 | ||
116 | hr = OpenPolicyKey(wzPolicyPath, &hk); | 124 | hr = OpenPolicyKey(wzPolicyPath, &hk); |
117 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | 125 | PolcExitOnFailure(hr, "Failed to open policy key: %ls", wzPolicyPath); |
126 | |||
127 | if (!hk) | ||
118 | { | 128 | { |
119 | ExitFunction1(hr = S_FALSE); | 129 | ExitFunction1(hr = S_FALSE); |
120 | } | 130 | } |
121 | PolcExitOnFailure(hr, "Failed to open policy key: %ls", wzPolicyPath); | ||
122 | 131 | ||
123 | hr = RegReadUnexpandedString(hk, wzPolicyName, pfNeedsExpansion, pscz); | 132 | hr = RegReadUnexpandedString(hk, wzPolicyName, pfNeedsExpansion, pscz); |
124 | if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) | 133 | PolcExitOnPathFailure(hr, fExists, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); |
134 | |||
135 | if (!fExists) | ||
125 | { | 136 | { |
126 | ExitFunction1(hr = S_FALSE); | 137 | ExitFunction1(hr = S_FALSE); |
127 | } | 138 | } |
128 | PolcExitOnFailure(hr, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); | ||
129 | 139 | ||
130 | LExit: | 140 | LExit: |
131 | ReleaseRegKey(hk); | 141 | ReleaseRegKey(hk); |
132 | 142 | ||
133 | if (S_FALSE == hr || FAILED(hr)) | 143 | if (!fExists) |
134 | { | 144 | { |
135 | if (NULL == wzDefault) | 145 | if (NULL == wzDefault) |
136 | { | 146 | { |
@@ -155,12 +165,18 @@ static HRESULT OpenPolicyKey( | |||
155 | { | 165 | { |
156 | HRESULT hr = S_OK; | 166 | HRESULT hr = S_OK; |
157 | LPWSTR sczPath = NULL; | 167 | LPWSTR sczPath = NULL; |
168 | BOOL fExists = FALSE; | ||
158 | 169 | ||
159 | hr = PathConcat(REGISTRY_POLICIES_KEY, wzPolicyPath, &sczPath); | 170 | hr = PathConcat(REGISTRY_POLICIES_KEY, wzPolicyPath, &sczPath); |
160 | PolcExitOnFailure(hr, "Failed to combine logging path with root path."); | 171 | PolcExitOnFailure(hr, "Failed to combine logging path with root path."); |
161 | 172 | ||
162 | hr = RegOpen(HKEY_LOCAL_MACHINE, sczPath, KEY_READ, phk); | 173 | hr = RegOpen(HKEY_LOCAL_MACHINE, sczPath, KEY_READ, phk); |
163 | PolcExitOnFailure(hr, "Failed to open policy registry key."); | 174 | PolcExitOnPathFailure(hr, fExists, "Failed to open policy registry key."); |
175 | |||
176 | if (!fExists) | ||
177 | { | ||
178 | ReleaseRegKey(*phk); | ||
179 | } | ||
164 | 180 | ||
165 | LExit: | 181 | LExit: |
166 | ReleaseStr(sczPath); | 182 | ReleaseStr(sczPath); |