Option Explicit On
Option Strict On
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Globalization
Imports System.Management
Namespace Edanmo.IO
Public NotInheritable Class NetShare
Implements IDisposable
Private _share As ManagementObject
Private Sub New(ByVal share As ManagementObject)
_share = share
End Sub
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets the share access rights for the current user or group.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property AccessMask() As AccessMasks
Get
Return CType(Convert.ToInt32(_share.InvokeMethod("GetAccessMask", Nothing), CultureInfo.InvariantCulture), AccessMasks)
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets or sets the maximum number of user connections.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Property AllowMaximum() As Integer
Get
Return Convert.ToInt32(_share.GetPropertyValue("AllowMaximum"), CultureInfo.InvariantCulture)
End Get
Set(ByVal value As Integer)
Me.SetShareInfo(value, Me.Description, Nothing)
End Set
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets the share description.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Property Description() As String
Get
Return _share.GetPropertyValue("Description").ToString
End Get
Set(ByVal value As String)
Me.SetShareInfo(Me.MaximumAllowed, value, Nothing)
End Set
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Property MaximumAllowed() As Integer
Get
Return Convert.ToInt32(_share.GetPropertyValue("MaximumAllowed"), CultureInfo.InvariantCulture)
End Get
Set(ByVal value As Integer)
Me.SetShareInfo(value, Me.Description, Nothing)
End Set
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets the share name.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property Name() As String
Get
Return _share.GetPropertyValue("Name").ToString
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets the local path of the share.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property Path() As String
Get
Return _share.GetPropertyValue("Path").ToString
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets the share status.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property Status() As String
Get
Return _share.GetPropertyValue("Status").ToString
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Gets the share type.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public ReadOnly Property Type() As ShareType
Get
Dim typeValue64 As Long = Convert.ToInt64(_share.GetPropertyValue("Type"), CultureInfo.InvariantCulture)
Dim typeValue32 As Integer
If (typeValue64 And &H80000000) > 0 Then
typeValue32 = &H80000000 Or Convert.ToInt32(typeValue64 And &H7FFFFFFF, CultureInfo.InvariantCulture)
Else
typeValue32 = Convert.ToInt32(typeValue64, CultureInfo.InvariantCulture)
End If
Return CType(typeValue32, ShareType)
End Get
End Property
''' -----------------------------------------------------------------------------
''' <summary>
''' Creates a shared folder in the local computer.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function Create( _
ByVal path As String, _
ByVal name As String) As NetShare
Return Create(".", path, ShareType.DiskDrive, name, -1, Nothing, Nothing)
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Creates a shared folder in the local computer.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function Create( _
ByVal path As String, _
ByVal name As String, _
ByVal password As String) As NetShare
Return Create(".", path, ShareType.DiskDrive, name, -1, Nothing, password)
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Creates a shared folder in the local computer.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function Create( _
ByVal path As String, _
ByVal type As ShareType, _
ByVal name As String, _
ByVal maximumAllowed As Integer, _
ByVal description As String, _
ByVal password As String) As NetShare
Return Create(".", path, type, name, maximumAllowed, description, password)
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Creates a shared resource in the specified computer.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function Create( _
ByVal computerName As String, _
ByVal path As String, _
ByVal type As ShareType, _
ByVal name As String, _
ByVal maximumAllowed As Integer, _
ByVal description As String, _
ByVal password As String) As NetShare
Dim shareClass As New System.Management.ManagementClass(String.Format("\\{0}\root\cimv2:Win32_Share", computerName))
Dim res As Integer
Try
If maximumAllowed < 0 Then
res = Convert.ToInt32( _
shareClass.InvokeMethod("Create", _
New Object() {path, name, type, Nothing, description, password, Nothing}), CultureInfo.InvariantCulture)
Else
res = Convert.ToInt32( _
shareClass.InvokeMethod("Create", _
New Object() {path, name, type, maximumAllowed, description, password, Nothing}), CultureInfo.InvariantCulture)
End If
If res <> 0 Then ThrowException(res)
Return GetShare(computerName, name)
Finally
shareClass.Dispose()
End Try
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Returns a NetShare object that represents the shared resource in the
''' specified computer.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function GetShare(ByVal computerName As String, ByVal shareName As String) As NetShare
Dim share As ManagementObject
share = New ManagementObject(String.Format("\\{0}\root\cimv2:Win32_Share.Name=""{1}""", computerName, shareName))
share.Get()
Return New NetShare(share)
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Returns a NetShare object that represents the shared resource.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function GetShare(ByVal shareName As String) As NetShare
Return GetShare(".", shareName)
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Returns the names of shared resources in the specified computer.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function GetShares(ByVal computername As String) As String()
' Get the Win32_Share class
Dim shareClass As New System.Management.ManagementClass(String.Format("\\{0}\root\cimv2:Win32_Share", computername))
Dim shares As ManagementObjectCollection
Try
Dim shareNames As New ArrayList
' Get the Win32_Share instances
shares = shareClass.GetInstances
' Enumerate all instances
For Each share As ManagementObject In shares
Try
' Add the name to the list
shareNames.Add(share.GetPropertyValue("Name"))
Finally
' Release the WMI object
share.Dispose()
End Try
Next
' Return the list as an array
Return DirectCast(shareNames.ToArray(GetType(String)), String())
Finally
' Release the WMI object
shareClass.Dispose()
End Try
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Returns the names of shared resources in the local computer.
''' </summary>
''' <returns></returns>
''' <remarks>
''' </remarks>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Shared Function GetShares() As String()
Return GetShares(".")
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' Stops sharing the folder.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Sub Delete()
Dim res As Integer
res = Convert.ToInt32(_share.InvokeMethod("Delete", Nothing), CultureInfo.InvariantCulture)
If res <> 0 Then ThrowException(res)
End Sub
Public Sub Dispose() Implements System.IDisposable.Dispose
' Dispose the WMI object
_share.Dispose()
GC.SuppressFinalize(Me)
End Sub
''' -----------------------------------------------------------------------------
''' <summary>
''' Sets the share info.
''' </summary>
''' <remarks>The security descriptor is not supported by this class.</remarks>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Private Sub SetShareInfo( _
ByVal maximumAllowed As Integer, _
ByVal description As String, _
ByVal descriptor As ManagementBaseObject)
Dim res As Integer
' Set the share info
res = Convert.ToInt32(_share.InvokeMethod("SetShareInfo", New Object() {maximumAllowed, description, descriptor}), CultureInfo.InvariantCulture)
If res <> 0 Then ThrowException(res)
End Sub
''' -----------------------------------------------------------------------------
''' <summary>
''' Throws an exception for the specified WMI error number.
''' </summary>
''' <history>
''' [Eduardo Morcillo] 11/08/2004 Created
''' </history>
''' -----------------------------------------------------------------------------
Private Shared Sub ThrowException(ByVal res As Integer)
Select Case res
Case 2 ' Access denied
Throw New Win32Exception(65)
Case 9 ' Invalid name
Throw New Win32Exception(1215)
Case 10 ' Invalid level
Throw New Win32Exception(124)
Case 21 ' Invalid parameter
Throw New Win32Exception(87)
Case 22 ' Duplicate Share
Throw New Win32Exception(2118)
Case 23 ' Redirected Path
Throw New Win32Exception(2117)
Case 24 ' Unknown device Or directory
Throw New Win32Exception(2116)
Case 25 ' Net name not found
Throw New Win32Exception(67)
Case Else
Throw New Exception("Unknown error: " & res)
End Select
End Sub
End Class
Public Enum ShareType As Integer
DiskDrive = 0
PrintQueue = 1
Device = 2
Ipc = 3
DiskDriveAdmin = &H80000000
PrintQueueAdmin = &H80000001
DeviceAdmin = &H80000002
IpcAdmin = &H80000003
End Enum
<Flags()> Public Enum AccessMasks As Integer
ListDirectory = &H1
AddFile = &H2
AddSubdirectory = &H4
ReadExtendedAttributes = &H8
WriteExtendedAttributes = &H10
Traverse = &H20
DeleteChild = &H40
ReadAttributes = &H80
WriteAttributes = &H100
Delete = &H10000
ReadControl = &H20000
WriteDac = &H40000
WriteOwner = &H80000
Synchronize = &H100000
Read = ListDirectory Or ReadExtendedAttributes Or ReadAttributes Or ReadControl Or Synchronize
ReadAndExecute = Read Or Traverse
Write = AddFile Or AddSubdirectory Or WriteExtendedAttributes Or WriteAttributes Or Synchronize
Modify = Read Or Write Or Delete Or Traverse
FullControl = DeleteChild Or WriteDac Or WriteOwner Or Modify
End Enum
End Namespace
http://www.applevb.com
分享到:
相关推荐
网上和csdn上很多关于vb.net获取内存总量的代码,无非wmi,API,以及一些vb6的,虽然vb6和.net有通用的地方,但还不能直接就用。反正我没找到一个直接拷贝粘贴就能用的。 我上传的压缩包里是vb.net工程,运行后label...
vb.net/C#双码 获取CPU温度/主板温度/显卡温度 硬盘温度 驱动获取非wmi 源码+中文注释,vb.net+c#双码
通过WMI获取硬盘型号、物理序列号及CPU的序列号,VB.NET2008通过,对实现软件注册会有帮助
基于WMI VB.NET 源码 系统信息检测
获取系统设备信息 (VB.NET) <br> 这个代码可以获取您的计算机的有关硬件设备信息以及软件信息,没有使用API,基于.NET Framework 2.0,使用了编写的WMI类文件。
此程序是利用系统WMI管理脚本托管写成,内容包含不安全代码,程序代码都已经用中文注释,别说看不懂 ~特此声明
一个用vb.net 结合WMI开发的检测系统驱动程序信息的工具(包括版本,名称,详细信息,日期)等.
vb.net编写的系统服务管理小工具 使用借住WMI编写的. 如果用的是ghost系统可能精简掉了WMI组件 会无法显示服务等信息
通过Windows Management Instrumentation获得操作系统的很多信息,包括软件、硬件...在命令行下输入WMIC可以访问WMI,可以查看许多资源的信息。此程序可以枚举所有能够使用的WMI资源,以列表的方法显示出来,直观易懂。
These samples demonstrate many of the new features available with Visual Basic 2008 and the .NET Framework 3.5 including hundreds Language Integrated Query (LINQ) samples. The following is the list ...
wmi 实例wmi 实例wmi 实例wmi 实例wmi 实例
VC WMI 类可以查看共享文件夹的绝对路径,已经封装好。
vb通过WMI收集系统信息,包括主板,BIOS等。
实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP...
这个代码可以获取您的计算机的有关硬件设备信息以及软件信息,没有使用API,基于VB.NET Framework 2.0,使用了编写的WMI类文件
WMI VB实例检测出目前运行的进程并结束
关于VB-WMI编程的详细易懂的教程,分章节详细描述VB-WMI的各种实例,非常实用
VB,WMI訪問 VB,WMI訪問 VB,WMI訪問
VB_使用WMI编程讲座,心态决定状态,心胸决定格局,眼界决定境界。当你的眼泪忍不住要流出来的时候,睁大眼睛,千万别眨眼,你会看到世界由清晰到模糊的全过程。
WMI VB 中文视频 脚本WMI VB 中文视频 脚本