用VB创建一个无法删除的目录后使用这个目录

来源:百度知道 编辑:UC知道 时间:2024/05/22 10:04:16
我所说的就是好多U盘病毒常用的目录名后面加“..”如“abc..”的目录。生成这样的目录以后,这个目录的效果是打不开删不掉且不能重命名,无论向里面放多少东西查看大小永远是零k

这种目录创建的方法很简单。这里写出来在测试后面的问题时就不用写了。

创建方法:
模块中
Public Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Public Sub ChuangJian(Lj As String, Yc As Boolean) '创建

Fh = CreateDire

怎么那么多api...vb自带的函数就可以了

MkDir "c:\12..\"
Open "c:\12...\12.." For Binary As 1
Put 1, , 1234#
Close
Kill "c:\12...\12.."
RmDir "c:\12..\"

测试过,是复制上来的
你试过不行,可能是你把我的代码的哪个地方改错了,或者你的系统被修改过.
另外,我是在ntfs上测试的,没有fat32.
这应该是windows的特性吧,linux里面记得没这个特性

Else
Fh = SetFileAttributes(Lj, FILE_ATTRIBUTE_NORMAL)
End If

End Sub
Public Sub ShanChu(Lj As String) '删除

Fh = SetFileAttributes(Lj, FILE_ATTRIBUTE_NORMAL)
Fh = RemoveDirectory(Lj)

End Sub

程序中:
ChuangJian "c:\abc..\", True
'说明:创建这样一个目录,后面的true是创建一个隐藏的系统文件。另外,写路径的时候,abc..\后面的这个“\”千万不能省,省了系统就不会把这个不合法的名字当成目录来处理了。

ShanChu "c:\abc..\" 这是删掉这个目录的代码(仅在这个目录为空的时候)。

以上代码均测试成功。

经过测试我可以向这个目录中放文件。
用api函数 copyfile 把一个文件复制进去。函数调用成功以后那个目录里就有文件了,强的是用程序打不