s3-rpc_client: Added a winreg set dword helper.
authorAndreas Schneider <asn@samba.org>
Thu, 27 Jan 2011 15:57:34 +0000 (16:57 +0100)
committerGünther Deschner <gd@samba.org>
Mon, 7 Feb 2011 11:31:59 +0000 (12:31 +0100)
Signed-off-by: Günther Deschner <gd@samba.org>
source3/rpc_client/cli_winreg.c
source3/rpc_client/cli_winreg.h

index 61e71d4e1e3a75f8861398d95a68489e22f76093..48c2cfa51b6a7c2a2813e52c0970fb6a2736711f 100644 (file)
@@ -169,4 +169,38 @@ NTSTATUS dcerpc_winreg_query_binary(TALLOC_CTX *mem_ctx,
        return status;
 }
 
+NTSTATUS dcerpc_winreg_set_dword(TALLOC_CTX *mem_ctx,
+                                struct dcerpc_binding_handle *h,
+                                struct policy_handle *key_handle,
+                                const char *value,
+                                uint32_t data,
+                                WERROR *pwerr)
+{
+       struct winreg_String wvalue;
+       DATA_BLOB blob;
+       WERROR result = WERR_OK;
+       NTSTATUS status;
+
+       wvalue.name = value;
+       blob = data_blob_talloc(mem_ctx, NULL, 4);
+       SIVAL(blob.data, 0, data);
+
+       status = dcerpc_winreg_SetValue(h,
+                                       mem_ctx,
+                                       key_handle,
+                                       wvalue,
+                                       REG_DWORD,
+                                       blob.data,
+                                       blob.length,
+                                       &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+       if (!W_ERROR_IS_OK(result)) {
+               *pwerr = result;
+       }
+
+       return status;
+}
+
 /* vim: set ts=8 sw=8 noet cindent syntax=c.doxygen: */
index 733387bd0cb0d9ad3086d4970f2875f04aa23a9f..6656ce71a98777cd0e838b3ed137f2391851c44b 100644 (file)
@@ -80,6 +80,33 @@ NTSTATUS dcerpc_winreg_query_binary(TALLOC_CTX *mem_ctx,
                                    const char *value,
                                    DATA_BLOB *data,
                                    WERROR *pwerr);
+
+/**
+ * @brief Set a value with the specified dword data.
+ *
+ * @param[in]  mem_ctx  The memory context to use.
+ *
+ * @param[in]  h        The binding handle for the rpc connection.
+ *
+ * @param[in]  key_handle A handle to a key that MUST have been opened
+ *                        previously.
+ *
+ * @param[in]  value    The name of the value to set.
+ *
+ * @param[in]  data     The data to store in the value.
+ *
+ * @param[out] pwerr    A pointer to a WERROR to store result of the query.
+ *
+ * @return              NT_STATUS_OK on success or a corresponding error if
+ *                      there was a problem on the connection.
+ */
+NTSTATUS dcerpc_winreg_set_dword(TALLOC_CTX *mem_ctx,
+                                struct dcerpc_binding_handle *h,
+                                struct policy_handle *key_handle,
+                                const char *value,
+                                uint32_t data,
+                                WERROR *pwerr);
+
 #endif /* CLI_WINREG_H */
 
 /* vim: set ts=8 sw=8 noet cindent syntax=c.doxygen: */