C#表单应用系统帐户

时间:2009-02-11 13:33:45

标签: c# winforms system account

是否可以在系统帐户下运行Windows窗体应用程序或控制台应用程序?像asp.net应用程序可以通过更改机器配置文件在系统帐户下运行:

<processModel  userName="machine" password="AutoGenerate" /> 

这是为了给程序提供更多权限......

4 个答案:

答案 0 :(得分:2)

听起来你正在攻击症状而不是问题。您的程序究竟需要做什么才需要额外的权限?也许有一种不同的方式来完成这项任务而不需要任何提升。

答案 1 :(得分:1)

是。您可以在系统帐户下运行任何应用程序。一种技术是将其作为计划任务启动,或使用“at”命令行实用程序启动。

不幸的是,自Windows Vista以来,以这种方式运行的应用程序无法与用户交互,因为它们在不同的会话中运行。

这意味着以这种方式运行WinForms(或任何类型的GUI)应用程序是有点无意义的。类似地,对于控制台应用程序,如果要查看输出。

如果是一次性的,你可以忍受它。否则,您应该考虑创建一个Windows服务,该服务可以配置为在任何用户帐户(包括SYSTEM)下运行。如果你想与它进行交互,你需要实现一个单独的应用程序,通过(例如).NET远程处理它。

答案 2 :(得分:0)

你不能通过从Windows中的计划任务启动它吗?

答案 3 :(得分:0)

这取决于你的目标是什么。如果您希望它在系统帐户下运行并让用户与其进行交互,则您无法执行此操作。如果您绝对需要这样做,最好还是创建一个服务来处理需要额外的priveleges并作为System运行的操作,以及从作为用户运行的GUI连接到该服务。但是,如果你走这条路,就会意识到你在标准用户可以做什么和System可以做什么之间的安全边界上创建一个漏洞,所以一定要保护GUI和服务之间的连接并限制范围。服务只是你绝对需要做的事情。

正如lassevk所提到的,如果你只是需要这样做一次或偶尔你可以使用runas在另一个安全上下文中运行但仍然有一个交互式GUI /控制台。

另一方面,如果您只是希望它在某个时间无人值守运行,您应该能够像Martin建议的那样使用任务调度程序。