如何在域用户登录时以提升的权限启动exe



每当域用户登录时,我需要启动具有管理员权限的windows窗体应用程序。我试图用服务和任务调度器启动应用程序,但应用程序UI没有显示。然而,我可以看到它在任务管理器中运行。如果我添加定时器并终止应用程序,它也会在正确的间隔后终止。

有人能帮助我如何开发/部署一个应用程序,使它显示"ui"吗?当任何用户登录到机器时。我应该添加一些注册表项来启动我的应用程序,还是有其他方法来实现这个…

在我看来,当用户登录时,任务并没有真正工作,因为没有足够的权限。试着这样做:您需要创建一个新任务,该任务只需启动您想要使用的程序,而不需要UAC对话框。在创建此任务时,在General选项卡中输入任务的名称(记住此名称,稍后将需要它),并选中"以最高权限运行-以最高权限运行"框。这将使任务以管理员权限运行。要确保没有兼容性问题,请转到"创建任务"窗口底部的"配置"下拉列表,然后选择Windows®7,Windows Server™2008 R2。在Actions选项卡- Actions上,您需要创建一个启动程序的操作。这里一切都很简单:选择动作"启动程序",指定要执行的程序的路径,然后点击确定。

您的最后一站是在设置选项卡。在这里,您需要确保选中了"Allow task to be run on demand"复选框。此外,通过选择"不启动新实例"选项,确保在任务已经运行时不会启动另一个实例。此过程的第二步是创建一个快捷方式,该快捷方式启动您刚刚创建的任务,然后启动您选择的程序,而不会出现UAC行。创建任务快捷方式与桌面普通快捷方式的一个重要区别是,在"项目位置"字段中输入schtasks/run/tn任务名称- schtasks/run/tn"任务名称"("任务名称"必须替换为实际任务名称)。在这个命令中,/Run参数只是执行一个特定的任务,/tn允许您输入要运行的任务的名称。创建快捷方式后,如果单击它,它将像您创建的任务一样工作,这反过来启动具有管理员权限的程序,但没有UAC。因此,您可以创建一个任务来运行创建的快捷方式。

要检查用户是否已登录到一个域,您可以使用

System.Security.Principal.WindowsIdentity.GetCurrent.Name得到"domainusername"

和启动你的应用程序一旦用户登录,你必须在启动时运行你的程序,试试这个链接。

和运行你的应用程序在启动时使用组策略(推荐)试试这个。

最新更新