programming-examples/perl/Win32/Share a directory on Windows.pl

62 lines
1.3 KiB
Perl
Raw Normal View History

2019-11-15 12:59:38 +01:00
#!/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 );
}
}