I do already have the binary data, but I don't know how to use the print statement to write to the registry. Here is what I have, and note that all works well except for the param2enc registry entry that must write that exact binary data back to the registry.
use Win32::TieRegistry;
$Registry->Delimiter("/");
$Registry->{"LMachine/SOFTWARE/Microsoft/Windows/CurrentVersion/Networ
+k/"}={
"LanMan/" => {
"VIRUSSCAN\$/" => {
"/Flags" => ["0x00000102","REG_DWORD"],
"/Parm1enc" => ["","REG_BINARY"],
"/Parm2enc" => [ pack("A","1f","b0","67","8c","79"),"REG_BINARY"],
"/Type" => ["0x00000000","REG_DWORD"],
"/Path" => "C:\\",
"/Remark" => "Do Not Delete This Share"},
},
All I am trying to do is create a share on Win9x machines. I have attempted to do it with win32::netresource but it has a known bug that won't allow it to work on 9x machines. Only on NT/2000/XP. Apparently ActiveState is working on it, but until they fix it, editing the registry is the only way I can think to create a share. I have it working, at least all except inserting pre-existing binary data into the registry.
}
Edit by tye | [reply] [d/l] |
Well, I'm not familiar with Win32::TieRegistry, but looking at your snippet I can guess that what you probably want is:
use Win32::TieRegistry;
$Registry->Delimiter("/");
$Registry->{"LMachine/SOFTWARE/Microsoft/Windows/CurrentVersion/Networ
+k/"}={
"LanMan/" => {
"VIRUSSCAN\$/" => {
"/Flags" => [ "0x00000102",
"REG_DWORD",
]
"/Parm1enc" => [ "",
"REG_BINARY",
]
"/Parm2enc" => [ pack( "c5", map { hex $_ } qw( 1f b0 67 8
+c 79 ) ),
"REG_BINARY",
]
"/Type" => [ "0x00000000",
"REG_DWORD",
]
"/Path" => "C:\\",
"/Remark" => "Do Not Delete This Share"
},
},
};
I'm assuming that those are hex values you've got there. If they're not you'll have to tell me otherwise. I'll also note that I've never seen a hash where each key takes two values, but I'll assume that that is the nature of Win32::TieRegistry, and that you know what you are doing.
Update: I see code tags have been applied in the above post, and things make much more sense. I've modified my code to reflect the change. | [reply] [d/l] |
use Win32::TieRegistry;
$Registry->Delimiter("/");
$Registry->{"LMachine/SOFTWARE/Microsoft/Windows/"
. "CurrentVersion/Network/"}= {
"LanMan/" => {
"VIRUSSCAN\$/" => {
"/Flags" => [ "0x00000102", "REG_DWORD" ],
"/Parm1enc" => [ "", "REG_BINARY" ],
"/Parm2enc" => [ "\x1f\xb0\x67\x8c\x79", "REG_BINARY" ],
"/Type" => [ "0x00000000", "REG_DWORD" ],
"/Path" => "C:\\",
"/Remark" => "Do Not Delete This Share"
},
},
};
-
tye
(but my friends call me "Tye") | [reply] [d/l] [select] |