summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-08-18 05:09:26 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:33:30 -0500
commit80f75d4138029f9d3548c02513aa2484cd400574 (patch)
treebf7ed5d67315d98a98a98dd28cfd94723083d7e5
parent3f260e2efe416a05571c29d8edb81ae0385a00c9 (diff)
downloadsamba-80f75d4138029f9d3548c02513aa2484cd400574.tar.gz
samba-80f75d4138029f9d3548c02513aa2484cd400574.tar.bz2
samba-80f75d4138029f9d3548c02513aa2484cd400574.zip
r9377: made winreg a user tool (I find it quite useful). I expect it to get the ability
to add/remove keys and values in the future. add it to the standard tests, ensuring that we know if winreg breaks. This is particularly important as winreg uses such unusual IDL constructs (This used to be commit e4ca36bda34cf5e6fecaef5fe60e5dd397ebee3c)
-rwxr-xr-xsource4/script/tests/test_ejs.sh1
-rwxr-xr-xsource4/scripting/bin/winreg75
2 files changed, 76 insertions, 0 deletions
diff --git a/source4/script/tests/test_ejs.sh b/source4/script/tests/test_ejs.sh
index 75a47155b7..bec130dc86 100755
--- a/source4/script/tests/test_ejs.sh
+++ b/source4/script/tests/test_ejs.sh
@@ -24,3 +24,4 @@ for f in samr.js echo.js ldb.js; do
testit "$f" $SCRIPTDIR/$f $CONFIGURATION ncalrpc: -U$USERNAME%$PASSWORD || failed=`expr $failed + 1`
done
+testit "winreg" scripting/bin/winreg $CONFIGURATION ncalrpc: 'HKLM' -U$USERNAME%$PASSWORD || failed=`expr $failed + 1`
diff --git a/source4/scripting/bin/winreg b/source4/scripting/bin/winreg
new file mode 100755
index 0000000000..d869d356fd
--- /dev/null
+++ b/source4/scripting/bin/winreg
@@ -0,0 +1,75 @@
+#!/bin/sh
+exec smbscript "$0" ${1+"$@"}
+/*
+ tool to manipulate a remote registry
+ Copyright Andrew Tridgell 2005
+ Released under the GNU GPL v2 or later
+*/
+
+libinclude("base.js");
+libinclude("winreg.js");
+
+var options = new Object();
+
+ok = GetOptions(ARGV, options,
+ "POPT_AUTOHELP",
+ "POPT_COMMON_SAMBA",
+ "POPT_COMMON_CREDENTIALS");
+if (ok == false) {
+ println("Failed to parse options: " + options.ERROR);
+ return -1;
+}
+
+if (options.ARGV.length < 1) {
+ println("Usage: winreg.js <BINDING> [path]");
+ return -1;
+}
+var binding = options.ARGV[0];
+reg = winreg_init();
+security_init(reg);
+
+print("Connecting to " + binding + "\n");
+status = reg.connect(binding);
+if (status.is_ok != true) {
+ print("Failed to connect to " + binding + " - " + status.errstr + "\n");
+ return -1;
+}
+
+function list_values(path) {
+ var list = winreg_enum_values(reg, path);
+ var i;
+ if (list == undefined) {
+ return;
+ }
+ for (i=0;i<list.length;i++) {
+ printf("\ttype=%2d size=%4d '%s'\n", list[i].type, list[i].size, list[i].name);
+ }
+}
+
+function list_path(path) {
+ var list = winreg_enum_path(reg, path);
+ var i;
+ list_values(path);
+ for (i=0;i<list.length;i++) {
+ var npath;
+ if (path) {
+ npath = path + "\\" + list[i];
+ } else {
+ npath = list[i];
+ }
+ println(npath);
+ list_path(npath);
+ }
+}
+
+var root;
+
+if (options.ARGV.length > 1) {
+ root = options.ARGV[1];
+} else {
+ root = '';
+}
+
+printf("Listing registry tree '%s'\n", root);
+list_path(root);
+return 0;