vb 怎么更改文件的修改时间

我发现用vb复制东西会更改掉修改时间的..怎么解决这个问题或者怎么更改修改时间To热心网友:那东西没有bug?!... 我发现用vb复制东西会更改掉修改时间的..怎么解决这个问题或者怎么更改修改时间
To 热心网友:
那东西没有bug?!
展开
 我来答
woshidaniel
2015-08-10 · TA获得超过9240个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:956万
展开全部
用api函数更改:
Private Type FILETIME
        dwLowDateTime   As Long
        dwHighDateTime   As Long
End Type
        Private Type SYSTEMTIME
        wYear   As Integer
        wMonth   As Integer
        wDayOfWeek   As Integer
        wDay   As Integer
        wHour   As Integer
        wMinute   As Integer
        wSecond   As Integer
        wMilliseconds   As Integer
End Type
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Private Sub SetModiTime(ByVal m_Path As String, ByVal m_Date As Date)
        Dim lngHandle        As Long
        Dim udtFileTime     As FILETIME
        Dim udtLocalTime     As FILETIME
        Dim udtSystemTime     As SYSTEMTIME

        udtSystemTime.wYear = Year(m_Date)
        udtSystemTime.wMonth = Month(m_Date)
        udtSystemTime.wDay = Day(m_Date)
        udtSystemTime.wDayOfWeek = Weekday(m_Date) - 1
        udtSystemTime.wHour = Hour(m_Date)
        udtSystemTime.wMinute = Minute(m_Date)
        udtSystemTime.wSecond = Second(m_Date)
        udtSystemTime.wMilliseconds = 0

        '   convert   system   time   to   local   time
        SystemTimeToFileTime udtSystemTime, udtLocalTime
        '   convert   local   time   to   GMT
        LocalFileTimeToFileTime udtLocalTime, udtFileTime
        '   open   the   file   to   get   the   filehandle
        lngHandle = CreateFile(m_Path, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
        '   change   date/time   property   of   the   file
        SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
        '   close   the   handle
        CloseHandle lngHandle
        MsgBox "The date of the file has been changed to " + Str$(m_Date), vbInformation + vbOKOnly, App.Title
End Sub
工科小书生
2015-08-28 · 工科资料,一应俱全。
工科小书生
采纳数:286 获赞数:923

向TA提问 私信TA
展开全部

方法:

  • 点击“工程”-“工程属性”-“生成”-修改版本号、修改次数

  • 在生产EXE文件点击属性修改

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fafa_12184155
2011-01-05 · TA获得超过613个赞
知道小有建树答主
回答量:797
采纳率:0%
帮助的人:607万
展开全部
给你个思路
第一,在修改文件前把系统时间给改了````呵呵是不是一下子恍然大悟啊,时间改成你之前文件的修改时间
第二,修改之后再把时间调回,因为你用VB,所以基本不用加上时差。直接在程序里换成修改之前的那个时间就OK了

或者,你记下原文件修改的时间,然用VB调系统时间,调成你记下的时间,再修改文件,再调回时间。呵呵。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-11-14
展开全部
用api函数更改:
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Private Sub SetModiTime(ByVal m_Path As String, ByVal m_Date As Date)
Dim lngHandle As Long
Dim udtFileTime As FILETIME
Dim udtLocalTime As FILETIME
Dim udtSystemTime As SYSTEMTIME

udtSystemTime.wYear = Year(m_Date)
udtSystemTime.wMonth = Month(m_Date)
udtSystemTime.wDay = Day(m_Date)
udtSystemTime.wDayOfWeek = Weekday(m_Date) - 1
udtSystemTime.wHour = Hour(m_Date)
udtSystemTime.wMinute = Minute(m_Date)
udtSystemTime.wSecond = Second(m_Date)
udtSystemTime.wMilliseconds = 0

' convert system time to local time
SystemTimeToFileTime udtSystemTime, udtLocalTime
' convert local time to GMT
LocalFileTimeToFileTime udtLocalTime, udtFileTime
' open the file to get the filehandle
lngHandle = CreateFile(m_Path, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
' change date/time property of the file
SetFileTime lngHandle, udtFileTime, udtFileTime, udtFileTime
' close the handle
CloseHandle lngHandle
MsgBox "The date of the file has been changed to " + Str$(m_Date), vbInformation + vbOKOnly, App.Title
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蹇力行裴祯
2019-11-16 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:836万
展开全部
vb修改系统时间可是再简单不过了
一个代码就可以实现了
date
=
datevalue("你要修改的日期")
注意这个输入的日期是有格式的
比如说你想修改到8888年8月8日
就是date
=
datevalue("8888-8-8")
千万不能写date
=
datevalue("8888年8月8日")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式