gpt4 book ai didi

.net - 调试时临时更改 list requestExecutionLevel

转载 作者:行者123 更新时间:2023-12-02 05:17:07 26 4
gpt4 key购买 nike

我正在 Visual Studio 中开发一个应用程序,该应用程序在安装到用户系统上后需要管理员权限。我添加了一个正确的应用程序 list 文件,以确保发生这种情况:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

但是现在如果我想在 Visual Studio 中调试程序,我需要以管理员身份运行 Visual Studio。没有布埃诺。而且最烦人的是程序在调试时并不真正需要管理员权限。仅在正确安装到用户系统上后才需要这些权限。

有没有一种干净、简单的方法来“抛出一个开关”,在开发过程中禁用管理员要求,然后在我发布应用程序时重新启用它?

编辑:

当我向用户发布应用程序时,我运行一个使用 MSBuild 的构建脚本。我想做的是让 Visual Studio 在发布配置中构建一个解决方案,没有管理员 list 。然后,当我运行构建脚本时,我希望 MSBuild 包含管理员 list ,同时保持相同发布配置。

最佳答案

您可以通过预构建事件来完成此操作项目 -> 选项 -> 构建事件

创建一个预构建事件,例如:

del "$(ProjectDir)app.manifest"

if "$(ConfigurationName)"=="Debug" (
copy "$(ProjectDir)app.debug.manifest" "$(ProjectDir)app.manifest"
) else (
copy "$(ProjectDir)app.release.manifest" "$(ProjectDir)app.manifest"
)

这里我们假设您的 list 名为 app.manifest 并且位于项目的根目录中 - 显然可以根据需要对其进行修改。

无论如何,请制作两份 list 文件副本,并调用一份 app.debug.manifest 和一份 app.release.manifest,对它们进行适当配置,这样将在每次构建之前将事件的 app.manifest 替换为适当的版本。

编辑:

如果您希望 MSBuild 使用与 Visual Studio 相同的配置但不同的 list ,您还可以尝试将上述预构建事件调整为如下所示:

del "$(ProjectDir)app.manifest"

if "$(AdminManifest)"=="true" (
copy "$(ProjectDir)app.release.manifest" "$(ProjectDir)app.manifest"
) else (
copy "$(ProjectDir)app.debug.manifest" "$(ProjectDir)app.manifest"
)

现在,当您运行 MSBuild 时,您可以这样做:

MSBuild.exe MySolution.sln /p:Configuration=WhateverYouWant /p:AdminManifest=true

另请参阅:

https://stackoverflow.com/a/938888/327083

https://stackoverflow.com/a/1732478/327083

关于.net - 调试时临时更改 list requestExecutionLevel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com