OPTION EXPLICIT
DIM ICSSC_DEFAULT, CONNECTION_PUBLIC, CONNECTION_PRIVATE, CONNECTION_ALL
DIM NetSharingManager
DIM PublicConnection, PrivateConnection
DIM EveryConnectionCollection
if objArgs.Count = 3 then
priv_con = objArgs(0)
publ_con = objArgs(1)
switch = objArgs(2)
if Initialize() = TRUE then
GetConnectionObjects()
FirewallTestByName priv_con,publ_con
end if
else
DIM szMsg
if Initialize() = TRUE then
GetConnectionObjects()
FirewallTestByName "list","list"
end if
szMsg = "To share your internet connection, please provide the name of the private and public connections as the argument." & vbCRLF & vbCRLF & _
"Usage:" & vbCRLF & _
" " & WScript.scriptname & " " & chr(34) & "Private Connection Name" & chr(34) & " " & chr(34) & "Public Connection Name" & chr(34)
WScript.Echo( szMsg & vbCRLF & vbCRLF)
end if
end sub
sub FirewallTestByName(con1,con2)
on error resume next
DIM Item
DIM EveryConnection
DIM objNCProps
DIM szMsg
DIM bFound1,bFound2
WScript.echo(vbCRLF & vbCRLF)
bFound1 = false
bFound2 = false
for each Item in EveryConnectionCollection
set EveryConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item)
set objNCProps = NetSharingManager.NetConnectionProps(Item)
szMsg = "Name: " & objNCProps.Name & vbCRLF & _
"Guid: " & objNCProps.Guid & vbCRLF & _
"DeviceName: " & objNCProps.DeviceName & vbCRLF & _
"Status: " & objNCProps.Status & vbCRLF & _
"MediaType: " & objNCProps.MediaType
if EveryConnection.SharingEnabled then
szMsg = szMsg & vbCRLF & _
"SharingEnabled" & vbCRLF & _
"SharingType: " & ConvertConnectionTypeToString(EveryConnection.SharingConnectionType)
end if
if objNCProps.Name = con1 then
bFound1 = true
if EveryConnection.SharingEnabled = False and switch="on" then
szMsg = szMsg & vbCRLF & "Not Shared... Enabling private connection share..."
WScript.Echo(szMsg)
EveryConnection.EnableSharing CONNECTION_PRIVATE
szMsg = " Shared!"
elseif(switch = "off") then
szMsg = szMsg & vbCRLF & "Shared... DisEnabling private connection share..."
WScript.Echo(szMsg)
EveryConnection.EnableSharing CONNECTION_ALL
end if
end if
if objNCProps.Name = con2 then
bFound2 = true
if EveryConnection.SharingEnabled = False and switch="on" then
szMsg = szMsg & vbCRLF & "Not Shared... Enabling public connection share..."
WScript.Echo(szMsg)
EveryConnection.EnableSharing CONNECTION_PUBLIC
szMsg = " Shared!"
elseif(switch = "off") then
szMsg = szMsg & vbCRLF & "Shared... DisEnabling public connection share..."
WScript.Echo(szMsg)
EveryConnection.EnableSharing CONNECTION_ALL
end if
end if
WScript.Echo(szMsg & vbCRLF & vbCRLF)
next
if( con1 <> "list" ) then
if( bFound1 = false ) then
WScript.Echo( "Connection " & chr(34) & con1 & chr(34) & " was not found" )
end if
if( bFound2 = false ) then
WScript.Echo( "Connection " & chr(34) & con2 & chr(34) & " was not found" )
end if
end if
end sub
function Initialize()
DIM bReturn
bReturn = FALSE
set NetSharingManager = Wscript.CreateObject("HNetCfg.HNetShare.1")
if (IsObject(NetSharingManager)) = FALSE then
Wscript.Echo("Unable to get the HNetCfg.HnetShare.1 object")
else
if (IsNull(NetSharingManager.SharingInstalled) = TRUE) then
Wscript.Echo("Sharing isn't available on this platform.")
else
bReturn = TRUE
end if
end if
Initialize = bReturn
end function
function GetConnectionObjects()
DIM bReturn
DIM Item
bReturn = TRUE
if GetConnection(CONNECTION_PUBLIC) = FALSE then
bReturn = FALSE
end if
if GetConnection(CONNECTION_PRIVATE) = FALSE then
bReturn = FALSE
end if
if GetConnection(CONNECTION_ALL) = FALSE then
bReturn = FALSE
end if
GetConnectionObjects = bReturn
end function
function GetConnection(CONNECTION_TYPE)
DIM bReturn
DIM Connection
DIM Item
bReturn = TRUE
if (CONNECTION_PUBLIC = CONNECTION_TYPE) then
set Connection = NetSharingManager.EnumPublicConnections(ICSSC_DEFAULT)
if (Connection.Count > 0) and (Connection.Count < 2) then
for each Item in Connection
set PublicConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item)
next
else
bReturn = FALSE
end if
elseif (CONNECTION_PRIVATE = CONNECTION_TYPE) then
set Connection = NetSharingManager.EnumPrivateConnections(ICSSC_DEFAULT)
if (Connection.Count > 0) and (Connection.Count < 2) then
for each Item in Connection
set PrivateConnection = NetSharingManager.INetSharingConfigurationForINetConnection(Item)
next
else
bReturn = FALSE
end if
elseif (CONNECTION_ALL = CONNECTION_TYPE) then
set Connection = NetSharingManager.EnumEveryConnection
if (Connection.Count > 0) then
set EveryConnectionCollection = Connection
else
bReturn = FALSE
end if
else
bReturn = FALSE
end if
if (TRUE = bReturn) then
if (Connection.Count = 0) then
Wscript.Echo("No " + CStr(ConvertConnectionTypeToString(CONNECTION_TYPE)) + " connections exist (Connection.Count gave us 0)")
bReturn = FALSE
'valid to have more than 1 connection returned from EnumEveryConnection
elseif (Connection.Count > 1) and (CONNECTION_ALL <> CONNECTION_TYPE) then
Wscript.Echo("ERROR: There was more than one " + ConvertConnectionTypeToString(CONNECTION_TYPE) + " connection (" + CStr(Connection.Count) + ")")
bReturn = FALSE
end if
end if
Wscript.Echo(CStr(Connection.Count) + " objects for connection type " + ConvertConnectionTypeToString(CONNECTION_TYPE))
GetConnection = bReturn
end function
function ConvertConnectionTypeToString(ConnectionID)
DIM ConnectionString
if (ConnectionID = CONNECTION_PUBLIC) then
ConnectionString = "public"
elseif (ConnectionID = CONNECTION_PRIVATE) then
ConnectionString = "private"
elseif (ConnectionID = CONNECTION_ALL) then
ConnectionString = "all"
else
ConnectionString = "Unknown: " + CStr(ConnectionID)
end if
ConvertConnectionTypeToString = ConnectionString
end function
Parameters
dwClientVersion [in]
Specifies the highest version of the WLAN API that the client supports.
Value Meaning
1
Client version for Windows XP with SP3 and Wireless LAN API for Windows XP with SP2.
2
Client version for Windows Vista and Windows Server 2008
pReserved
Reserved for future use. Must be set to NULL.
pdwNegotiatedVersion [out]
Specifies the version of the WLAN API that will be used in this session. This value is usually the highest version supported by both the client and server.
phClientHandle [out]
Specifies a handle for the client to use in this session. This handle is used by other functions throughout the session.
Return Value
If the function succeeds, the return value is ERROR_SUCCESS.
If the function fails, the return value may be one of the following return codes.
Parameters
hClientHandle [in]
The client's session handle, returned by a previous call to the WlanOpenHandle function.
pFailReason [out, optional]
An optional pointer to a value that receives the failure reason, if the call to the WlanHostedNetworkStartUsingfunction fails. Possible values for the failure reason are from the WLAN_HOSTED_NETWORK_REASONenumeration type defined in the Wlanapi.h header file.
pvReserved
Reserved for future use. This parameter must be NULL.
Return Value
If the function succeeds, the return value is ERROR_SUCCESS.
If the function fails, the return value may be one of the following return codes.
以上两函数摘自微软的MSDN,由于篇幅关系,这里我不便一一举例,更多API请到Visual studio 2010或更高版本的MSDN中寻找