The original post contained nothing relevant to Perl
I don't know if Win32 is relavent to Perl.
Anybody with a little bit understanding of the Windows OS would have
been able to figure out everything you pointed out.
Of course, the easiest way to scan for available shares without having
to know their names is to browse the network neighborhood.
Not if there is a CPAN module that already does it. I don't know if there
is btw.
I am inclined not to trust the intentions of anyone who is ignorant
enough to ask this question on this newsgroup.
Sinan
Ok, here's the big Win32 secret unveiled. There may be a Perl module that
covers these WNet functions. Looks easy enough to implement an interface for.
Also, there is by now WMI classes and functions I'm sure.
The way to browse Network Neighborhood:
Windows Networking Functions
The following functions are used in Windows networking:
MultinetGetConnectionPerformance
WNetAddConnection2
WNetAddConnection3
WNetCancelConnection
WNetCancelConnection2
WNetCloseEnum
WNetConnectionDialog
WNetConnectionDialog1
WNetDisconnectDialog
WNetDisconnectDialog1
WNetEnumResource
WNetGetConnection
WNetGetLastError
WNetGetNetworkInformation
WNetGetProviderName
WNetGetResourceInformation
WNetGetResourceParent
WNetGetUniversalName
WNetGetUser
WNetOpenEnum
WNetUseConnection
WNetOpenEnum
=====================
The WNetOpenEnum function starts an enumeration of network resources or existing connections. You can continue the enumeration by calling the WNetEnumResource function.
DWORD WNetOpenEnum(
DWORD dwScope, // scope of enumeration
DWORD dwType, // resource types to list
DWORD dwUsage, // resource usage to list
LPNETRESOURCE lpNetResource, // resource structure
LPHANDLE lphEnum // enumeration handle buffer
);
Parameters
dwScope
[in] Specifies the scope of the enumeration. This parameter can be one of the following values. Value Meaning
RESOURCE_CONNECTED Enumerate all currently connected resources. The function ignores the dwUsage parameter. For more information, see the following Remarks section.
RESOURCE_CONTEXT Enumerate only resources in the network context of the caller. Specify this value for a Network Neighborhood view. The function ignores the dwUsage parameter.
RESOURCE_GLOBALNET Enumerate all resources on the network.
RESOURCE_REMEMBERED Enumerate all remembered (persistent) connections. The function ignores the dwUsage parameter.
dwType
[in] Specifies the resource types to enumerate. This parameter can be a combination of the following values. Value Meaning
RESOURCETYPE_ANY All resources. This value cannot be combined with RESOURCETYPE_DISK or RESOURCETYPE_PRINT.
RESOURCETYPE_DISK All disk resources.
RESOURCETYPE_PRINT All print resources.
If a network provider cannot distinguish between print and disk resources, it can enumerate all resources.
dwUsage
[in] Specifies the resource usage type to enumerate. This parameter can be a combination of the following values. Value Meaning
0 All resources.
RESOURCEUSAGE_CONNECTABLE All connectable resources.
RESOURCEUSAGE_CONTAINER All container resources.
RESOURCEUSAGE_ATTACHED Setting this value forces WNetOpenEnum to fail if the user is not authenticated. The function fails even if the network allows enumeration without authentication.
RESOURCEUSAGE_ALL Setting this value is equivalent to setting RESOURCEUSAGE_CONNECTABLE, RESOURCEUSAGE_CONTAINER, and RESOURCEUSAGE_ATTACHED.
This parameter is ignored unless the dwScope parameter is equal to RESOURCE_GLOBALNET. For more information, see the following Remarks section.
lpNetResource
[in] Pointer to a NETRESOURCE structure that specifies the container to enumerate. If the dwScope parameter is not RESOURCE_GLOBALNET, this parameter must be NULL.
If this parameter is NULL, the root of the network is assumed. (The system organizes a network as a hierarchy; the root is the topmost container in the network.)
If this parameter is not NULL, it must point to a NETRESOURCE structure. This structure can be filled in by the application or it can be returned by a call to the WNetEnumResource function. The
NETRESOURCE structure must specify a container resource; that is, the RESOURCEUSAGE_CONTAINER value must be specified in the dwUsage parameter.
To enumerate all network resources, an application can begin the enumeration by calling WNetOpenEnum with the lpNetResource parameter set to NULL, and then use the returned handle to call
WNetEnumResource to enumerate resources. If one of the resources in the NETRESOURCE array returned by the WNetEnumResource function is a container resource, you can call WNetOpenEnum to open the
resource for further enumeration.
lphEnum
[out] Pointer to an enumeration handle that can be used in a subsequent call to WNetEnumResource.
Return Values
If the function succeeds, the return value is NO_ERROR.
If the function fails, the return value can be one of the following error codes.
Value Meaning
ERROR_NOT_CONTAINER The lpNetResource parameter does not point to a container.
ERROR_INVALID_PARAMETER Either the dwScope or the dwType parameter is invalid, or there is an invalid combination of parameters.
ERROR_NO_NETWORK The network is unavailable.
ERROR_EXTENDED_ERROR A network-specific error occurred. To obtain a description of the error, call the WNetGetLastError function.