我想创建一个具有自我更新功能的应用程序。
不幸的是,当我想点击名为"更新"的按钮时它会抛出错误,并显示以下消息:"拒绝访问!"
以下是我使用的代码:
Public Sub versionfileUPDATE()
Try
If System.IO.File.Exists(My.Settings.telepitesihely & "/seemtahelperv1downloader.exe") Then
System.IO.File.Delete(My.Settings.telepitesihely & "/seemtahelperv1downloader.exe")
Threading.Thread.Sleep(500)
client.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/azz6qundbe2rna1/SeeMta%20PK%20Generator%20V1.exe?dl=11"), My.Settings.telepitesihely & "/seemtahelperv1downloader.exe")
Else
client.DownloadFileAsync(New Uri("https://dl.dropboxusercontent.com/s/azz6qundbe2rna1/SeeMta%20PK%20Generator%20V1.exe?dl=1"), My.Settings.telepitesihely & "/seemtahelperv1downloader.exe")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
那么,当用户点击更新按钮时,是否有任何需要管理员权限的解决方案?
答案 0 :(得分:3)
流程必须在启动时提供管理员令牌,否则永远不会获得管理员令牌。使其“按需”工作的唯一方法是你必须制作第二个程序,需要管理员权限才能进行下载,然后让你的程序启动第二个程序并等待它完成。
但是,更好的解决方案是选择一个不需要管理员权限才能写入的更好的保存位置,例如,您可以使用Environment.GetFolderPath
查找用户的LocalApplicationData
文件夹(例如,对您而言)会指向像C:\Users\Ntohing_Trolll\AppData\Local
这样的东西,并从那里的子文件夹中保存并运行exe。这就是Chrome等程序的更新功能,因此您无需管理权限即可进行更新。