62 lines
1.3 KiB
Perl
62 lines
1.3 KiB
Perl
|
#!/usr/bin/perl -w
|
||
|
|
||
|
use Win32;
|
||
|
use Win32::NetResource;
|
||
|
use Win32::WinError; # Error code
|
||
|
|
||
|
# Set up a default host name.
|
||
|
$node = Win32::NodeName();
|
||
|
|
||
|
# Generate "proper" UNC name.
|
||
|
$default_host = "\\\\" . $node;
|
||
|
|
||
|
$host = $default_host;
|
||
|
|
||
|
$directory = "d:\\MyShare";
|
||
|
$name = "MyShare";
|
||
|
$remark = "MyShare directory";
|
||
|
|
||
|
|
||
|
%share_def = (
|
||
|
'maxusers' => -1,
|
||
|
'netname' => $name,
|
||
|
'passwd' => "",
|
||
|
'path' => $directory,
|
||
|
'permissions' => 0x01 | 0x02, # read-write
|
||
|
'remark' => $remark,
|
||
|
'type' => 0x00, # directory
|
||
|
);
|
||
|
|
||
|
$parm_error = 0; # ignore
|
||
|
|
||
|
$status = Win32::NetResource::NetShareAdd(\%share_def,$parm_error, $host);
|
||
|
|
||
|
if ($status) {
|
||
|
print "Shared $directory as $host\\$name\n";
|
||
|
} else {
|
||
|
print_netresource_error();
|
||
|
}
|
||
|
|
||
|
|
||
|
# Note that you may see no message for an error.
|
||
|
sub print_netresource_error {
|
||
|
|
||
|
my($error_code) = 0;
|
||
|
my($type);
|
||
|
my($description);
|
||
|
|
||
|
Win32::NetResource::GetError( $error_code );
|
||
|
|
||
|
if ($error_code == ERROR_EXTENDED_ERROR) {
|
||
|
|
||
|
Win32::NetResource::WNetGetLastError($error_code,
|
||
|
$description, $type);
|
||
|
|
||
|
print "Extended $type error: $description\n";
|
||
|
} else {
|
||
|
print "Error $error_code\n";
|
||
|
print Win32::FormatMessage( $error_code );
|
||
|
}
|
||
|
|
||
|
}
|