c# - 在非管理员帐户上自动启动具有管理员权限的 WinForms 应用程序

标签 c# windows uac

我已经为这个问题苦苦挣扎了几天,但找不到任何能为我解决问题的帖子。也许我想要的是不可能的。

我们开发了一个 WinForms 应用程序供我们公司内部使用。

大多数员工在 Windows 中没有管理员权限。

我们的应用程序需要管理员访问机器,并且需要在用户登录时自动启动。

这是我尝试过的:

1) 将快捷方式放入启动文件夹

我可以让应用程序自动启动 ( using a relauncher ),但每次重启时它仍然需要管理员在计算机旁(输入密码)。

2) 注册表项

我创建了一个 Software\Microsoft\Windows\CurrentVersion\Run 注册表项来自动启动应用程序。无论我运行重新启动程序还是应用程序本身,UAC 都要求在每次重新启动(或重新登录)时输入密码。

3) 定时任务

我创建了一个计划任务,以在使用机器上的管理员权限登录时自动启动应用程序(使用以下帐户)。我还选中了“以最高权限运行”框。 UAC 仍然会在每次重启时弹出。

4) Windows 服务

我尝试将该应用程序作为 Windows 服务运行,但它有一个用户界面(Windows 服务禁用了该界面)。

5) 为特定程序禁用 UAC

看起来你可以disable UAC for a specific program但这涉及下载应用程序兼容性工具包、创建某种数据库等。我非常希望我们的 IT 人员不必在每台机器上都这样做。在这一点上,这可能是我唯一的选择。

看起来管理员应该能够安装一个应用程序,以便它在没有提示的情况下自动运行。我是否缺少执行此操作的方法?

最佳答案

您应该将您的程序拆分为一个在用户启动时运行的非管理 UI 和一个执行管理任务的管理服务。

要从 UI 运行需要管理的代码,请使用 WCF 请求服务执行此操作。

请注意,敌对方可能会冒充 UI 并要求服务执行恶意操作;您需要仔细弄清楚服务在响应 IPC 调用时应该能够做什么。

关于c# - 在非管理员帐户上自动启动具有管理员权限的 WinForms 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20250233/

相关文章:

c# - 如何使用 Process.Start 启动管道和重定向命令?

c# - MVC3 Controller 中的 GET 参数

c# - OAuth。推特。 StatusCode : 403. 需要 SSL。 C#

PHP 从 Windows 机器上的套接字读取

c# - 如何在领域驱动设计中为领域模型编写领域逻辑?

c# - 有关 Windows TCP 端口通信的帮助

windows - 在 windbg 中进行内核调试时无法获得完整的用户模式堆栈跟踪

.net - 用于为 Windows Vista/7 开发 .NET 应用程序的资源?

windows - 在C :\Program Files (x86)\MyApp\myapp. cfg中写入配置文件,与管理员权限

c# - 隔离存储和流程提升