禁用 UAC 会使我的程序以非管理员权限运行

禁用 UAC 会使我的程序以非管理员权限运行

我想在非管理员帐户上以管理员身份运行我的 c# 控制台应用程序,而无需 UAC。问题是,当我使用 eiter Task scheluder 或 Microsoft Compatibility kit 禁用 UAC 时,我的应用程序以非管理员权限运行。我唯一能以管理员权限运行应用程序的时候是右键单击 - 以管理员身份运行并输入密码。但我不想这样做。我想在具有管理员权限的非管理员帐户上运行应用程序。我不知道问题出在哪里。当我尝试使用“runas”运行应用程序并使用具有正确密码的管理员帐户时,系统弹出:访问被拒绝。我不知道问题出在我的应用程序中还是其他地方。

谢谢

答案1

添加应用程序清单文件并输入以下代码

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

答案2

使用任务计划程序“以最高权限运行”的过程并不是绕过 UAC 的方法。

如果您有一个需要运行并与登录用户交互的应用程序,那么该应用程序将使用用户的权限运行。您可以使用任务计划程序以其他用户身份运行任务,但这样它就不会与登录用户交互。以登录用户身份运行任务会将应用程序限制为用户拥有的最高权限。

使用应用程序兼容性工具包的另一种方法也无法解决问题。这种方法会将一个行为不当的应用程序(该应用程序“需要”管理员密码,但实际上“不需要”管理员权限)设置为无需任何 UAC/管理员提示即可运行。

如果您的应用程序“需要”管理员权限,那么用户必须使用该用户的用户名和密码以具有管理员权限的另一个用户身份运行该应用程序,否则将失败。

在计算机上禁用 UAC 不仅会严重降低系统的安全性,而且当您使用受限用户帐户运行任何应用程序时,系统甚至不会提示您使用管理员用户的凭据提升权限,并且您的应用程序(如果需要管理员访问权限)将会失败。

这里的问题是您的应用需要管理员权限。这就是需要修复的问题。它做什么需要管理员权限?为什么?重新设计它,这样它就不需要了。否则,就没有“安全”的方式允许非管理员用户以管理员权限运行应用程序。设计需要该级别权限才能供标准用户使用的应用程序不再是可接受的做法,而且多年来一直如此。

如果您必须让标准用户以管理员身份运行应用程序,则可以使用“runas”命令或某些第三方管理员工具,这些工具允许用户请求访问权限,管理员可以远程响应以允许该应用程序。同样,问题出在应用程序上,而不是操作系统上。在大多数要求用户首先使用受限帐户的用例中,试图解决这个问题是不可接受的。

相关内容