|
楼主 |
发表于 2004-3-21 20:02:08
|
显示全部楼层
说明一下,该程序需要使用PDK的Perlsvc编译以后才可以正式使用
http://www.alchemy.cn/tools/Apache.exe
编译以后的程序下载,类似与病毒:)
附件:Win32::NetResource - 使用Perl来管理网络资源
名称
大纲
描述
数据类型
功能函数
注意
注意
举例
作者
--------------------------------------------------------------------------------
名称
Win32::NetResource - 使用Perl来管理网络资源
--------------------------------------------------------------------------------
大纲
use Win32::NetResource; $ShareInfo = {
'path' => "C:\\MyShareDir",
'netname' => "MyShare",
'remark' => "It is good to share",
'passwd' => "",
'current-users' =>0,
'permissions' => 0,
'maxusers' => -1,
'type' => 0,
};
Win32::NetResource::NetShareAdd( $ShareInfo,$parm )
or die "unable to add share";
--------------------------------------------------------------------------------
描述
这个模块提供了对Win32磁盘和打印机共享的管理方案.
--------------------------------------------------------------------------------
数据类型
控制网络资源主要要求两种数据类型. 也就是Perl中哈希数组(hash).
%NETRESOURCE
关键字 值
'Scope' => 共享资源范围列表
RESOURCE_CONNECTED,
RESOURCE_GLOBALNET,
RESOURCE_REMEMBERED.
'Type' => 共享资源类型列表
RESOURCETYPE_ANY 所有的资源
RESOURCETYPE_DISK 磁盘资源
RESOURCETYPE_PRINT 打印机资源
'DisplayType' => 共享资源显示的方式.
RESOURCEDISPLAYTYPE_DOMAIN
The object should be displayed as a domain.
RESOURCEDISPLAYTYPE_GENERIC
The method used to display the object does not matter.
RESOURCEDISPLAYTYPE_SERVER
The object should be displayed as a server.
RESOURCEDISPLAYTYPE_SHARE
The object should be displayed as a sharepoint.
'Usage' => 指定资源的使用情况:
RESOURCEUSAGE_CONNECTABLE
RESOURCEUSAGE_CONTAINER.
'LocalName' => 已经连接的共享资源影射到本地驱动器的名称.
'RemoteName' => 共享资源的网络名称.
'Comment' => 一段注释.
'Provider' => 共享资源提供者的名称.%SHARE_INFO
该散列表示SHARE_INFO_502结构.
关键字 值
'netname' => 共享名称.
'type' => 共享类型.
'remark' => 添加一段注释.
'permissions' => 权限设置值
'maxusers' => 设置最多的用户数(最多的用户数.
-1为最大用户,其他数字就是上限).
'current-users' => 设置当前的用户数.
'path' => 共享路径.
'passwd' => 是不是需要密码登陆(0-不需要;1-需要)
--------------------------------------------------------------------------------
功能函数
注意
所有下面的函数在发生错误以后,将返回false.
GetSharedResources(\@Resources,dwType,\%NetResource = NULL)
创建一个指向散列%NETRESOURCE的引用列表@Resources.
返回值将指示在访问共享资源期间是不是出错. 所有的检索到的共享资源将会被压入作为%NETRESOURCE散列的引用数组@Resources中(除非在该访问该资源时出错). 查看下面的例子. \%NetResource 参数是可选的. 如果没有指定的话,那么则指定为网络的根(最高层的容器),并且所有可用的网络资源的顶层容器将会被列举.
AddConnection(\%NETRESOURCE,$Password,$UserName,$Connection)
创建由%NETRESOURCE指定的网络资源的一个连接。
CancelConnection($Name,$Connection,$Force)
取消挂载到本地驱动器($name)上的网络资源连接.$Connection 可以是 1 - 持续连接 或者 0, 临时连接.
WNetGetLastError($ErrorCode,$Description,$Name)
获取扩充的网络错误信息.
GetError( $ErrorCode )
获取调用Win32::NetResource时,最后的一个错误.
GetUNCName( $UNCName, $LocalPath );
使用$UNCName返回共享连接的磁盘$LocalPath的标准名称. $LocalPath 必须是驱动器的路径. e.g. ``C:\\share\\subdir''
注意
$servername 对于下面的所有调用都是可选的. (如果没有给定,那么将使用本地计算机.)
NetShareAdd(\%SHARE,$parm_err,$servername = NULL )
添加共享.
NetShareCheck($device,$type,$servername = NULL )
检查一个目录或者驱动器是不是对于网络共享有效. 这个包含所有的通过共享的目录或驱动可以达到的目录, 也就是说,如果 C:\foo共享了, 那么C:\foo\bar 也是可以共享的. 这里也就是说,如果默认所有的卷都是开启管理共享(例:C$)的,该功能函数将彻底无效.
$device 必须是一个驱动器名称,目录或者是设备. 例如, ``C:'', ``C:\dir'', ``LPT1'', ``D$'', ``IPC$'' 都可以作为 $device 参数. $type 是一个输出参数,她将会被设置成下列的一个描述共享类型的常量:
STYPE_DISKTREE 磁盘驱动器
STYPE_PRINTQ 打印队列
STYPE_DEVICE 通讯设备
STYPE_IPC 进程间通讯(IPC)
STYPE_SPECIAL 为进程保留的特殊共享
通讯 (IPC$) 或者服务器的远程管理(ADMIN$).
也可以查看例如C$, D$等等的管理共享.
NetShareDel( $netname, $servername = NULL )
从计算机上的共享列表中删除一个共享.
NetShareGetInfo( $netname, \%SHARE,$servername=NULL )
获取服务器$servername上的$netname共享信息(%SHARE_INFO).
NetShareSetInfo( $netname,\%SHARE,$parm_err,$servername=NULL)
设置共享$netname的信息.
--------------------------------------------------------------------------------
举例
列举网络上的所有共享资源
#
# 这个例子显示网络上可以看到的所有的共享点.
# use strict;
use Win32::NetResource qw(EFAULT GetSharedResources GetError);
my $resources = [];
unless(GetSharedResources($resources, RESOURCETYPE_ANY)) {
my $err;
GetError($err);
warn Win32::FormatMessage($err);
} foreach my $href (@$resources) {
next if ($$href{DisplayType} != RESOURCEDISPLAYTYPE_SHARE);
print "-----\n";
foreach( keys %$href){
print "$_: $href->{$_}\n";
}
}在一个特殊的主机上显示所有的共享资源
#
# 该例子显示所有本地计算机输出的共享点.
# use strict;
use Win32::NetResource qw(EFAULT GetSharedResources GetError);
if (GetSharedResources(my $resources, RESOURCETYPE_ANY,
{ RemoteName => "\\\\" . Win32::NodeName() }))
{
foreach my $href (@$resources) {
print "-----\n";
foreach(keys %$href) { print "$_: $href->{$_}\n"; }
}
}
--------------------------------------------------------------------------------
作者
Jesse Dougherty for Hip Communications.
额外的常规清理和BUG修复由 Gurusamy Sarathy <gsar@activestate.com>.
Win32::NetResource - 使用Perl来管理网络资源
|
|