【发布时间】:2019-04-02 19:21:48
【问题描述】:
对于我正在开发的 .NET Framework 程序,我设置了一个自动更新程序。它从最新的 github 版本下载一个 7-zip 自解压存档(以 exe 的形式),并运行它来更新程序。问题是,尽管该程序并未安装在需要管理员权限的任何地方,但 Update.exe 始终需要管理员在安装后运行它,尽管通过浏览器下载它时没有必要。有什么办法可以防止这种情况发生吗?这是我当前的设置:
using (WebClient client = new WebClient()) {
// Add the user agent header, otherwise we will get access denied.
client.Headers.Add("User-Agent: Other");
// Full asset streamed into a single string. I.E: https://github.com/soopercool101/BrawlCrate/releases/download/BrawlCrate_v0.14_Hotfix2/BrawlCrate.v0.14.6873.39137.exe
string html = client.DownloadString(Asset.Url);
client.DownloadFile(URL, AppPath + "/Update.exe"); // AppPath is defined as whereever the program is installed
}
【问题讨论】:
-
检查 Update.exe 是否有一个清单告诉 Windows 是否需要管理员权限。如果没有,Windows 将不得不猜测,并且仅文件名“Update.exe”就会导致 Windows 猜测可能需要管理员权限。
-
同意Daniel,查看文件,Project => Properties => app.manifest, => Security => requestedExecutionLevel
-
丹尼尔,非常感谢!将其命名为“temp.exe”会使其正确地不需要管理员权限。