如何在使用VB.NET运行某些EXE文件时隐藏Windows 7打开文件的安全性?
你好,亲爱的社区 我正在尝试使用VB.NET构建一个简单的自动更新应用程序。这很简单。也就是说,我将最新的ZIP文件放在我的托管站点中,然后使用如何在使用VB.NET运行某些EXE文件时隐藏Windows 7打开文件的安全性?,vb.net,Vb.net,你好,亲爱的社区 我正在尝试使用VB.NET构建一个简单的自动更新应用程序。这很简单。也就是说,我将最新的ZIP文件放在我的托管站点中,然后使用WebClient.DownloadFileAsync下载它。下载后,我使用http://stahlforce.com/dev/unzip.exe 但是每次我使用Process.start运行unzip.exe,Windows 7总是显示打开的文件安全性 VB.NET是否有可能绕过这种安全限制 谢谢 顺便说一句,这是我使用WebClient.Downlo
WebClient.DownloadFileAsync
下载它。下载后,我使用http://stahlforce.com/dev/unzip.exe
但是每次我使用Process.start
运行unzip.exe
,Windows 7总是显示打开的文件安全性
VB.NET是否有可能绕过这种安全限制
谢谢
顺便说一句,这是我使用WebClient.DownloadFileAsync
的代码,以防有人在谷歌上看到它并登陆此页面:
Public Class AutoUpdate
Dim installationFolder As String = "C:\Program Files\xyz\abc\"
Dim updateFileNameTarget As String
Private Sub btnStartUpdte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStartUpdte.Click
lblPercent.Text = ""
lblDownloading.Text = ""
lblDownloading.Text = ""
pbDownloadStatus.Value = 0
Dim wc As New WebClient
AddHandler wc.DownloadFileCompleted, AddressOf downloadComplete
AddHandler wc.DownloadProgressChanged, AddressOf progressChanged
Dim path As String = "http://xyz.abc.com/test.zip"
updateFileNameTarget = installationFolder & "test.zip"
Try
If File.Exists(updateFileNameTarget) Then
File.Delete(updateFileNameTarget)
End If
lblDownloading.Text = "Downloading " & path
wc.DownloadFileAsync(New Uri(path), updateFileNameTarget)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub progressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
pbDownloadStatus.Value = e.ProgressPercentage
lblPercent.Text = e.ProgressPercentage & "%"
End Sub
Private Sub downloadComplete(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
MessageBox.Show("Download complete. Now extracting")
Dim cmd As String = Application.StartupPath & "\Tools\unzip.exe"
Dim arg As String = "-o """ & updateFileNameTarget & """"
Process.Start(cmd, arg)
End Sub
End Class
如果您已经在调用其他所有内容(包括解压),也可以使用。使用
-d
标志删除NTFS备用数据流(ADS)。应该只有一个,它向Windows表明该文件是从“不受信任的源”下载的
您下载的文件当前将有一个如下所示的流:
:Zone.Identifier:$DATA 26
在提取后但在执行之前从下载文件中删除此流,警告将不再显示
另请参见:-对于在.NET中使用这些文件而不需要
streams.exe
非常详细的解释的库,请参见!谢谢顺便说一句,在我将unzip.exe
作为项目内容并构建安装文件后,使用Process.start()运行unzip.exe
,将不会显示任何安全文件警告对话框。但是,你知道为什么对话框不会再次显示吗?@swdev-你的意思是你注意到警告是正常的,但不是在你将其打包到安装文件中之后,你想知道为什么会这样吗?如果是这样的话,那是因为这些广告可能没有被安装包程序包含到归档中,所以它实际上是在删除这些信息,类似于我所描述的。