r165: Add support for viewing registry values in gregedit
authorJelmer Vernooij <jelmer@samba.org>
Sun, 11 Apr 2004 16:04:06 +0000 (16:04 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:51:13 +0000 (12:51 -0500)
(This used to be commit 1d8a6d762aa4dab54bb58959cb1e7957a76e5b6e)

source4/lib/registry/TODO
source4/lib/registry/tools/gregedit.c
source4/librpc/idl/winreg.idl
source4/torture/rpc/winreg.c

index fc741cea40715588764671f59c2ea89da323a53d..f84b1c53393472c1ab292ad8c5c5f002014d9424 100644 (file)
@@ -19,6 +19,9 @@ reg_backend_ldb:
 reg_backend_wine.c:
  - finish 
 
+regshell:
+ - support for security descriptors
 gregedit.c:
  - support for editing values / adding values / deleting values
  - support for adding/deleting keys
index 2d145e699a50aeed9f82feaf71ffd1ae2da17d50..51fad4287dfe03ba265210b35bbbf6932b633a10 100644 (file)
@@ -63,23 +63,6 @@ static void gtk_show_werror(WERROR err)
        gtk_widget_destroy (dialog);
 }
 
-static void treeview_add_val(REG_VAL *val)
-{
-       GtkTreeIter iter;
-       gtk_list_store_append(store_vals, &iter);
-       gtk_list_store_set (store_vals,
-                                           &iter, 
-                                               0,
-                                               reg_val_name(val),
-                                               1,
-                                               str_regtype(reg_val_type(val)),
-                                               2,
-                                               reg_val_data_string(val),
-                                               3, 
-                                               val,
-                                               -1);
-}
-
 static void expand_key(GtkTreeView *treeview, GtkTreeIter *parent, GtkTreePath *arg2)
 {
        GtkTreeIter iter, tmpiter;
@@ -394,18 +377,32 @@ void on_key_activate (GtkTreeView *treeview,
        REG_KEY *k;
        REG_VAL *val;
        WERROR error;
+       GtkTreeIter parent;
 
-//FIXME        gtk_tree_model_get(GTK_TREE_MODEL(store_keys), iter, 1, &k, -1);
+       gtk_tree_model_get_iter(GTK_TREE_MODEL(store_keys), &parent, path);
+       gtk_tree_model_get(GTK_TREE_MODEL(store_keys), &parent, 1, &k, -1);
+
+       g_assert(k);
 
        gtk_list_store_clear(store_vals);
 
        for(i = 0; W_ERROR_IS_OK(error = reg_key_get_value_by_index(k, i, &val)); i++) {
-               treeview_add_val(val);
+               GtkTreeIter iter;
+               gtk_list_store_append(store_vals, &iter);
+               gtk_list_store_set (store_vals,
+                                           &iter, 
+                                               0,
+                                               reg_val_name(val),
+                                               1,
+                                               str_regtype(reg_val_type(val)),
+                                               2,
+                                               reg_val_data_string(val),
+                                               3, 
+                                               val,
+                                               -1);
        }
 
        if(!W_ERROR_EQUAL(error, WERR_NO_MORE_ITEMS)) gtk_show_werror(error);
-
-       return;
 }
 
 GtkWidget* create_mainwin (void)
@@ -567,15 +564,29 @@ GtkWidget* create_mainwin (void)
 
   tree_vals = gtk_tree_view_new ();
     /* Column names */
-  curcol = gtk_tree_view_column_new_with_attributes ("Name", gtk_cell_renderer_text_new(), NULL);
+
+  curcol = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title(curcol, "Name");
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_column_pack_start(curcol, renderer, True);
   gtk_tree_view_append_column(GTK_TREE_VIEW(tree_vals), curcol);
+  gtk_tree_view_column_add_attribute(curcol, renderer, "text", 0);
 
-  
-  curcol = gtk_tree_view_column_new_with_attributes ("Type", gtk_cell_renderer_text_new(), NULL);
+  curcol = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title(curcol, "Type");
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_column_pack_start(curcol, renderer, True);
   gtk_tree_view_append_column(GTK_TREE_VIEW(tree_vals), curcol);
-                                                                                
-  curcol = gtk_tree_view_column_new_with_attributes ("Value", gtk_cell_renderer_text_new(), NULL);
+  gtk_tree_view_column_add_attribute(curcol, renderer, "text", 1);
+
+  curcol = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title(curcol, "Value");
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_column_pack_start(curcol, renderer, True);
   gtk_tree_view_append_column(GTK_TREE_VIEW(tree_vals), curcol);
+  gtk_tree_view_column_add_attribute(curcol, renderer, "text", 2);
+
+  
   gtk_widget_show (tree_vals);
   gtk_container_add (GTK_CONTAINER (scrolledwindow2), tree_vals);
 
index 39e46c0761da580ac4b657db88104a4a66ad44e9..539889b515f778fdfdf6613ec9493411bae602eb 100644 (file)
        /******************/
        /* Function: 0x18 */
        WERROR winreg_InitiateSystemShutdown(
+               [in]    winreg_String hostname,
                [in]    winreg_String message,
                [in]    uint32 timeout,
-               [in]    uint16 flags
+               [in]    uint16 flags,
+               [out]   uint16 status
        );
 
        /******************/
index 68466f0084b0f8c652553a79220e0f55aa3ff493..42326b1468eaa838b4f3b40fb26a69b8c8433f07 100644 (file)
@@ -407,8 +407,9 @@ static BOOL test_AbortSystemShutdown(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 {
        struct winreg_AbortSystemShutdown r;
        NTSTATUS status;
+       uint16 server = 0x0;
 
-       r.in.server = 0x0;
+       r.in.server = &server;
        
        status = dcerpc_winreg_AbortSystemShutdown(p, mem_ctx, &r);
 
@@ -557,6 +558,9 @@ BOOL torture_rpc_winreg(int dummy)
        if(!test_InitiateSystemShutdown(p, mem_ctx, "spottyfood", 30))
                ret = False;
 
+       if(!test_AbortSystemShutdown(p, mem_ctx))
+               ret = False;
+
        for (i = 0; i < ARRAY_SIZE(open_fns); i++) {
                if (!test_Open(p, mem_ctx, open_fns[i]))
                        ret = False;