是否可以在系统帐户下运行 Windows 窗体应用程序或控制台应用程序?像 asp.net 应用程序可以通过更改机器配置文件在系统帐户下运行:
<processModel userName="machine" password="AutoGenerate" />
这是为了给程序更多的特权...
听起来你是在攻击症状而不是问题。您的程序究竟需要做什么需要额外的权限?也许有一种不同的方式来完成这项任务,而无需任何提升。
是的。您可以在系统帐户下运行任何应用程序。一种技术是将其作为计划任务启动,或者使用“at”命令行实用程序启动。
然而不幸的是,从 Windows Vista 开始,以这种方式运行的应用程序无法与用户交互,因为它们在不同的会话中运行。
这意味着以这种方式运行 WinForms(或任何类型的 GUI)应用程序是毫无意义的。同样对于控制台应用程序,如果您想查看输出。
如果它是一次性的,你可能可以忍受它。否则,您应该考虑创建一个 Windows 服务,该服务可以配置为在任何用户帐户(包括 SYSTEM)下运行。如果您想与它交互,您需要实现一个单独的应用程序,通过(例如).NET 远程处理与它对话。
这取决于你的目标是什么。如果您希望它在系统帐户下运行并让用户与之交互,则不能这样做。如果您绝对需要这样做,最好的办法是创建一个服务来处理需要额外权限并作为系统运行的操作,并从作为用户运行的 GUI 连接到该服务。但是,如果您走这条路,请意识到您在标准用户可以做的事情和系统可以做的事情之间的安全边界上创建了一个漏洞,因此请确保您保护 GUI 和服务之间的连接并限制只为您绝对需要它做的事情提供服务。
正如 lassevk 提到的,如果您只需要执行一次或偶尔执行此操作,您可以使用 runas 在另一个安全上下文中运行,但仍然具有交互式 GUI/控制台。
另一方面,如果您只是希望它在某个时间无人看管地运行,您应该能够像 Martin 建议的那样使用任务调度程序。
您不能通过从 Windows 中的计划任务启动它来做到这一点吗?