如题

解决方案 »

  1.   

    SetFileAttributes    
     
    VB声明    
    Declare  Function  SetFileAttributes  Lib  "kernel32"  Alias  "SetFileAttributesA"  (ByVal  lpFileName  As  String,  ByVal  dwFileAttributes  As  Long)  As  Long    
    说明    
    设置文件属性    
    返回值    
    Long,非零表示成功,零表示失败。会设置GetLastError    
    参数表    
    参数  类型及说明    
    lpFileName  String,要设置其属性的文件名    
    dwFileAttributes  Long,带有FILE_ATTRIBUTE_??前缀的一个或多个常数    
     
    'Read  and  Write  
    Const  MOVEFILE_REPLACE_EXISTING  =  &H1  
    Const  FILE_ATTRIBUTE_TEMPORARY  =  &H100  
    Const  FILE_BEGIN  =  0  
    Const  FILE_SHARE_READ  =  &H1  
    Const  FILE_SHARE_WRITE  =  &H2  
    Const  CREATE_NEW  =  1  
    Const  OPEN_EXISTING  =  3  
    Const  GENERIC_READ  =  &H80000000  
    Const  GENERIC_WRITE  =  &H40000000  
    Private  Declare  Function  SetVolumeLabel  Lib  "kernel32"  Alias  "SetVolumeLabelA"  (ByVal  lpRootPathName  As  String,  ByVal  lpVolumeName  As  String)  As  Long  
    Private  Declare  Function  WriteFile  Lib  "kernel32"  (ByVal  hFile  As  Long,  lpBuffer  As  Any,  ByVal  nNumberOfBytesToWrite  As  Long,  lpNumberOfBytesWritten  As  Long,  ByVal  lpOverlapped  As  Any)  As  Long  
    Private  Declare  Function  ReadFile  Lib  "kernel32"  (ByVal  hFile  As  Long,  lpBuffer  As  Any,  ByVal  nNumberOfBytesToRead  As  Long,  lpNumberOfBytesRead  As  Long,  ByVal  lpOverlapped  As  Any)  As  Long  
    Private  Declare  Function  CreateFile  Lib  "kernel32"  Alias  "CreateFileA"  (ByVal  lpFileName  As  String,  ByVal  dwDesiredAccess  As  Long,  ByVal  dwShareMode  As  Long,  ByVal  lpSecurityAttributes  As  Any,  ByVal  dwCreationDisposition  As  Long,  ByVal  dwFlagsAndAttributes  As  Long,  ByVal  hTemplateFile  As  Long)  As  Long  
    Private  Declare  Function  CloseHandle  Lib  "kernel32"  (ByVal  hObject  As  Long)  As  Long  
    Private  Declare  Function  SetFilePointer  Lib  "kernel32"  (ByVal  hFile  As  Long,  ByVal  lDistanceToMove  As  Long,  lpDistanceToMoveHigh  As  Long,  ByVal  dwMoveMethod  As  Long)  As  Long  
    Private  Declare  Function  SetFileAttributes  Lib  "kernel32"  Alias  "SetFileAttributesA"  (ByVal  lpFileName  As  String,  ByVal  dwFileAttributes  As  Long)  As  Long  
    Private  Declare  Function  GetFileSize  Lib  "kernel32"  (ByVal  hFile  As  Long,  lpFileSizeHigh  As  Long)  As  Long  
    Private  Declare  Function  GetTempFileName  Lib  "kernel32"  Alias  "GetTempFileNameA"  (ByVal  lpszPath  As  String,  ByVal  lpPrefixString  As  String,  ByVal  wUnique  As  Long,  ByVal  lpTempFileName  As  String)  As  Long  
    Private  Declare  Function  MoveFileEx  Lib  "kernel32"  Alias  "MoveFileExA"  (ByVal  lpExistingFileName  As  String,  ByVal  lpNewFileName  As  String,  ByVal  dwFlags  As  Long)  As  Long  
    Private  Declare  Function  DeleteFile  Lib  "kernel32"  Alias  "DeleteFileA"  (ByVal  lpFileName  As  String)  As  Long  
    Private  Sub  Form_Load()  
           'KPD-Team  1998  
           'URL:  http://www.allapi.net/  
           'E-Mail:  [email protected]  
           Dim  sSave  As  String,  hOrgFile  As  Long,  hNewFile  As  Long,  bBytes()  As  Byte  
           Dim  sTemp  As  String,  nSize  As  Long,  Ret  As  Long  
           'Ask  for  a  new  volume  label  
           sSave  =  InputBox("Please  enter  a  new  volume  label  for  drive  C:\"  +  vbCrLf  +  "  (if  you  don't  want  to  change  it,  leave  the  textbox  blank)")  
           If  sSave  <>  ""  Then  
                   SetVolumeLabel  "C:\",  sSave  
           End  If  
     
           'Create  a  buffer  
           sTemp  =  String(260,  0)  
           'Get  a  temporary  filename  
           GetTempFileName  "C:\",  "KPD",  0,  sTemp  
           'Remove  all  the  unnecessary  chr$(0)'s  
           sTemp  =  Left$(sTemp,  InStr(1,  sTemp,  Chr$(0))  -  1)  
           'Set  the  file  attributes  
           SetFileAttributes  sTemp,  FILE_ATTRIBUTE_TEMPORARY  
           'Open  the  files  
           hNewFile  =  CreateFile(sTemp,  GENERIC_WRITE,  FILE_SHARE_READ  Or  FILE_SHARE_WRITE,  ByVal  0&,  OPEN_EXISTING,  0,  0)  
           hOrgFile  =  CreateFile("c:\config.sys",  GENERIC_READ,  FILE_SHARE_READ  Or  FILE_SHARE_WRITE,  ByVal  0&,  OPEN_EXISTING,  0,  0)  
     
           'Get  the  file  size  
           nSize  =  GetFileSize(hOrgFile,  0)  
           'Set  the  file  pointer  
           SetFilePointer  hOrgFile,  Int(nSize  /  2),  0,  FILE_BEGIN  
           'Create  an  array  of  bytes  
           ReDim  bBytes(1  To  nSize  -  Int(nSize  /  2))  As  Byte  
           'Read  from  the  file  
           ReadFile  hOrgFile,  bBytes(1),  UBound(bBytes),  Ret,  ByVal  0&  
           'Check  for  errors  
           If  Ret  <>  UBound(bBytes)  Then  MsgBox  "Error  reading  file  ..."  
     
           'Write  to  the  file  
           WriteFile  hNewFile,  bBytes(1),  UBound(bBytes),  Ret,  ByVal  0&  
           'Check  for  errors  
           If  Ret  <>  UBound(bBytes)  Then  MsgBox  "Error  writing  file  ..."  
     
           'Close  the  files  
           CloseHandle  hOrgFile  
           CloseHandle  hNewFile  
     
           'Move  the  file  
           MoveFileEx  sTemp,  "C:\KPDTEST.TST",  MOVEFILE_REPLACE_EXISTING  
           'Delete  the  file  
           DeleteFile  "C:\KPDTEST.TST"  
           Unload  Me  
    End  Sub  
      

  2.   

    SetAttr  语句  
                 
     
    为一个文件设置属性信息。  
     
    语法  
     
    SetAttr  pathname,  attributes  
     
    SetAttr  语句的语法含有以下这些命名参数:  
     
    部分  描述    
    pathname  必要参数。用来指定一个文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。    
    Attributes  必要参数。常数或数值表达式,其总和用来表示文件的属性。    
     
     
    设置值  
     
    attributes  参数设置可为:  
     
    常数  值  描述    
    vbNormal  0  常规(缺省值)    
    VbReadOnly  1  只读。    
    vbHidden  2  隐藏。    
    vbSystem  4  系统文件    
    vbArchive  32  上次备份以后,文件已经改变    
     
     
    注意  这些常数是由  VBA  所指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的数值。  
     
    说明  
     
    如果想要给一个已打开的文件设置属性,则会产生运行时错误。  
     
     
     
     
    SetAttr  语句示例  
    本示例使用  SetAttr  语句来设置文件属性。  
     
    SetAttr"TESTFILE",  vbHidden      '  设置隐含属性。  
    SetAttr"TESTFILE",  vbHidden  +  vbReadOnly      '  设置隐含并只读。  
     
      

  3.   

    SetAttr  语句  
                 
     
    为一个文件设置属性信息。  
     
    语法  
     
    SetAttr  pathname,  attributes  
     
    SetAttr  语句的语法含有以下这些命名参数:  
     
    部分  描述    
    pathname  必要参数。用来指定一个文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。    
    Attributes  必要参数。常数或数值表达式,其总和用来表示文件的属性。    
     
     
    设置值  
     
    attributes  参数设置可为:  
     
    常数  值  描述    
    vbNormal  0  常规(缺省值)    
    VbReadOnly  1  只读。    
    vbHidden  2  隐藏。    
    vbSystem  4  系统文件    
    vbArchive  32  上次备份以后,文件已经改变    
     
     
    注意  这些常数是由  VBA  所指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的数值。  
     
    说明  
     
    如果想要给一个已打开的文件设置属性,则会产生运行时错误。  
     
     
     
     
    SetAttr  语句示例  
    本示例使用  SetAttr  语句来设置文件属性。  
     
    SetAttr"TESTFILE",  vbHidden      '  设置隐含属性。  
    SetAttr"TESTFILE",  vbHidden  +  vbReadOnly      '  设置隐含并只读。  
     
      

  4.   

    SetAttr "c:\CONFIG.SYS", vbNormal
        
        'vbVolume
        'vbSystem
        'vbReadOnly
        'vbNormal
        'vbHidden
        'vbDirectory
        'vbArchive
        'vbAlias
        'vbNormal
      

  5.   

    也可用fso对象处理
    Private Sub Command1_Click()
        Dim FSO As New FileSystemObject
        Dim mfile As File
        Dim mfileattu As FileAttribute
        Set mfile = FSO.GetFile("d:\123.txt")
        mfile.Attributes = ReadOnly
        Set mfile = Nothing
        Set FSO = Nothing
    End Sub