Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用VB.NET运行某些EXE文件时隐藏Windows 7打开文件的安全性?_Vb.net - Fatal编程技术网

如何在使用VB.NET运行某些EXE文件时隐藏Windows 7打开文件的安全性?

如何在使用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

你好,亲爱的社区

我正在尝试使用VB.NET构建一个简单的自动更新应用程序。这很简单。也就是说,我将最新的ZIP文件放在我的托管站点中,然后使用
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-你的意思是你注意到警告是正常的,但不是在你将其打包到安装文件中之后,你想知道为什么会这样吗?如果是这样的话,那是因为这些广告可能没有被安装包程序包含到归档中,所以它实际上是在删除这些信息,类似于我所描述的。