VB取得磁盘文件夹或文件的security

VB取得磁盘文件夹或文件的security,第1张

VB取得磁盘文件夹或文件的security,第2张

实现代码如下:
option explicit
Public Const maximum _ allowed As Long = & h 200000
Public Const delete As Long = & h 10000
Public Const READ _ CONTROL As Long = & h 20000
Public Const WRITE _ DAC As Long = & h 40000
Public Const WRITE _ OWNER As Long = & h 80000
Public Const SYNCHRONIZE As Long = . Public Const STANDARD _ RIGHTS _ REQUIRED As Long = & HF 0000
Public Const FILE _ READ _ DATA As Long = & H1
Public Const FILE _ LIST _ DIRECTORY As Long = & H1
Public Const FILE _ ADD _ FILE As Long = & H2
Public Const FILE _ WRITE _ DATA As Long = & H2
Public Const FILE _ CREATE _ PIPE _ INSTANCE As Long = & H4
Public Const FILE _ ADD _子目录As Long = & amp 公共常量FILE _ WRITE _ PROPERTIES As Long = FILE _ WRITE _ EA
公共常量FILE_EXECUTE As Long = &H20
公共常量FILE_TRAVERSE As Long = &H20
公共常量FILE _ DELETE _ CHILD As Long = & H40
公共常量FILE _ READ _ ATTRIBUTES As Long = & H80
公共常量FILE _ WRITE _ ATTRIBUTES As Long = & H100
公共常量FILE_GENERIC_READ As Long =(长 Public Const FILE _ GENERIC _ EXECUTE As Long =(STANDARD _ RIGHTS _ EXECUTE或FILE_READ_ATTRIBUTES或FILE_EXECUTE或SYNCHRONIZE)
Public Const FILE _ GENERIC _ WRITE As Long =(STANDARD _ RIGHTS _ WRITE或FILE_WRITE_ATTRIBUTES或FILE_WRITE_EA或FILE_APPEND_DATA或SYNCHRONIZE)
Public Const FILE _ ALL _ ACCESS As Long =(STANDARD _ RIGHTS _ REQUIRED或SYNCHRONIZE或& H1FF &)
Public Const GENERIC _ READ As Long = & h88 使用访问权限的常量和函数
Public Const OWNER _ SECURITY _ INFORMATION As Long = & H1
Public Const GROUP _ SECURITY _ INFORMATION As Long = & H2
Public Const DACL _ SECURITY _ INFORMATION As Long = & H4
Public Const TOKEN _ QUERY As Long = 8
Public Const SECURITY imperation As Integer = 3
Public Const any size _ ARRAY = 1
Public Const acelist directory = 1
Public Public Const aceredextendedattributes = 8
Public Const ACEWriteExtendedAttributes = 16
Public Const ACEExecuteFile = 32
Public Const aceredeleteductoriesandfiles = 64
Public Const ACEReadAttributes = 128
Public Const ACEWriteAttributes = 256
' Public Const ace write = 278
Public Const ACEFullControl = 2032127
Public Type GENERIC _ MAPPING
GENERIC read As Long
GENERIC write As Long
GENERIC execute As Long
End Type公共类型LUID
low part As Long
high part As Long
End Type公共类型LUID和_属性
pLuid As LUID
lpnlengthneedas Long)Long
公共声明函数access check Lib " advapi 32 . dll "(pSecurityDescriptor为Byte,ByVal ClientToken为Long,ByVal DesiredAccess为Long,GenericMapping为GENERIC_MAPPING,PrivilegeSet为PRIVILEGE_SET,PrivilegeSetLength为Long,GrantedAccess为Long,Status为Long)Long
公共声明函数impersonate self Lib " advapi 32 . dll "(ByVal impersonation level为Integer)Long
ByVal要求Access尽可能长,ByVal OpenAsSelf尽可能长, token handle As Long
Public Declare Function GetCurrentThread Lib " kernel 32 "()Long
Public Declare Function close handle Lib " kernel 32 "(ByVal hObject As Long)
Public Type OS version info
dwmajorsion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dw platformid As Long Public Declare Function GetVolumeInformation Lib " kernel 32 " Alias " GetVolumeInformation a "(ByVal lproot pathname为字符串,ByVal lpVolumeNameBuffer为字符串,ByVal lpVolumeNameBuffer为字符串,ByVal nVolumeNameSize为long,lpVolumeSerialNumber为Long,lpMaximumComponentLength为Long,lpFileSystemFlags为Long,ByVal lpFileSystemNameBuffer为字符串,Bynfilesystemname为Long)为long
'检查文件的访问权限公共函数检查文件访问(filename为字符串,ByVal DesiredAccess为 GenMap As GENERIC _ MAPPING
Dim Volume As String,fs flags As Long
If Not Not()Then
check file access =-1
Exit Function
End If
If Left $(fileName,2)= " \ " Then
r = InStr(3,fileName," \ ")
If r = 0 Then
Volume = fileName & "
Else
Volume = Left $(fileName 0
If (FSFlags和FS _ PERSISTENT _ ACLS)= 0 Then
check file access =-1
Exit函数
End If
GetFileSecurity fileName,OWNER_SECURITY_INFORMATION或GROUP_SECURITY_INFORMATION或DACL_SECURITY_INFORMATION,0,0,SDSize
If Err。 不支持“LastDllError 122 Then
check file access =-1”权限。返回-1。
Exit Function
End If
If SDSize = 0 Then Exit Function
ReDim sec desc(1 To SD size)
If GetFileSecurity(fileName,OWNER _ SECURITY _ INFORMATION _
或GROUP _ SECURITY _ INFORMATION _
或DACL_SECURITY_INFORMATION,_
SecDesc(1),SD size,SD size)= 0 Then
Exit Function
End If
GENERIC READ = FILE _ GENERIC _ READ
gen map。GENERIC WRITE = FILE _ GENERIC _ WRITE
gen map。GENERIC EXECUTE = FILE _ GENERIC _ EXECUTE
gen map。generic ALL = FILE _ ALL _ ACCESS
MapGenericMask DesiredAccess,GenMap
ACCESS check sec desc(1),hToken,desired ACCESS,gen map,PrivSet,Len(PrivSet),CheckFileAccess,r
CloseHandle hToken
End If
RevertToSelf
End函数

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VB取得磁盘文件夹或文件的security

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情