以管理员权限启动我的C#应用程序

3
我有一个应用程序需要通过SCCM分发到我的业务域中的5000台计算机,但我在Windows安全方面遇到了问题。问题是,我的应用程序需要管理员权限才能访问注册表键和启动本地系统上的一些“特定”功能,而域中的所有用户(当然IT支持团队除外)都没有这样的权限。
我想知道是否可以让Windows在下次启动时调用启动器,该启动器将获取应用程序服务器上的管理员用户名和密码,然后使用这些凭据运行应用程序。但我在执行此任务时遇到了困难,因为我是C#的新手(我是Java程序员),而且我还没有找到任何同时使用用户名和密码信息的runas命令的方法。
另外,如果我能够在没有烦人的Windows UAC提示的情况下使用管理员权限,那就太完美了。
有人能帮帮我吗?

你要部署到哪个版本的Windows? - DeanOC
1
你想要利用模拟身份,这需要一个具有该权限的域用户,然后尝试模拟该用户以执行任务。可以在此处找到示例:https://msdn.microsoft.com/zh-cn/library/w070t6ka(v=vs.110).aspx - Greg
1
以下内容与主题无关,因为它没有展示任何实际的代码或信息。 - Greg
在我的一个应用程序中,我构建并运行了一个后台服务来处理所有特权调用。它的美妙之处在于用户级别权限可以启动/停止服务,因此只有在需要时才运行。这可能不是您的解决方案,但仍然是一个建议... - RussDunn
2
如果您需要设置注册表值,请使用安装程序(首选MSI)。管理员可以部署它。这些任务是安装程序的典型用例。Windows服务也可能适用,但对于您的用例来说可能过于复杂,并且在未正确实现时会带来潜在的安全风险。 - JensG
刚刚找到了一个解决方案,https://dev59.com/YljUa4cB1Zd3GeqPRW95。不管怎样,感谢大家的帮助。 - Paulo
2个回答

0

我不确定我要说什么,但是我做了一些研究,可能会对你有所帮助。

你可以尝试安排一个任务来运行你的程序,并配置此计划以管理员权限在启动时运行它。

安排任务

然后你需要寻找的唯一剩下的事情就是如何为所有计算机轻松编程这个任务。

希望这能帮到你。


0
如果您的应用程序必须以管理员身份运行才能正常运行:请告诉Windows:
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

这样,如果我是一个标准用户(即非管理员),并尝试使用您的程序:我将被提示要求管理员来到我的桌面并输入他们的凭据,以便我可以运行您的程序。

你的程序只能在管理员权限下运行的缺点是标准用户不能运行你的程序。

你可以尝试关闭 UAC;但是这并没有解决任何问题。UAC 是一个生活质量特性。

  • 如果我关闭了 UAC
  • 我仍然是一个标准用户
  • 除了现在我必须注销并以管理员身份登录

正确 的解决方案是让您的程序作为标准用户工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接