这是我使用的代码:
Dim file As String
Dim prefetchPath As String
Dim FileName As String = My.Application.Info.AssemblyName
prefetchPath = Environment.GetEnvironmentVariable("windir", EnvironmentVariableTarget.Machine) & "\Prefetch"
For Each file In IO.Directory.GetFiles(prefetchPath)
If file.Contains(FileName) Then
IO.File.Delete(file)
End If
Next
如果我使用FileName
,我不知道为什么它不起作用。但是如果我使用这段代码就行了
If file.Contains("Example.exe") Then
IO.File.Delete(file)
End If
我想确保如果有人更改了应用程序的名称,代码的工作方式相同(我已经以管理员身份运行该文件) 帮帮我谢谢。
答案 0 :(得分:0)
我的猜测是AssemblyName只返回没有扩展名的名称,尝试包含.exe。此外,值得注意的是,您可以使用IO.DirectoryInfo类并在GetFiles方法中传递文件名以删除For / Each循环。
这是一个简单的例子:
Dim prefetchPath As String = IO.Path.Combine(Environment.GetEnvironmentVariable("windir", EnvironmentVariableTarget.Machine), "Prefetch")
Dim FileName As String = My.Application.Info.AssemblyName & ".exe"
If New IO.DirectoryInfo(prefetchPath).GetFiles(FileName).Count > 0 Then
IO.File.Delete(IO.Path.Combine(prefetchPath, FileName))
End If