【发布时间】:2011-03-23 23:36:22
【问题描述】:
我有一个在标准用户帐户下运行的 Winforms 应用程序(即用户帐户登录,应用程序在该指定用户下运行)。但是,这个应用程序需要执行一些操作(写入注册表就是其中之一),这需要管理员权限,并重新启动服务(我要避免的问题是:Service Controller not able to start service - Access denied)。
解决此问题的一种方法是使用清单文件使整个应用程序以管理员身份运行。或者,如果我编写一个在最高功率帐户(我相信是本地系统)下运行的 Windows 服务(称为 x),它可以工作,它可以完成所有高功率帐户所需的东西,然后又调用存在的服务,我需要操作并在命名/登录的用户帐户(因此是标准用户)下运行。如果是这样,我如何调用 Windows 服务来按需运行(或者控制台应用程序会更好)?
【问题讨论】:
-
是否会从您的应用程序中生成一个运行批处理脚本(您可以动态构建)的进程来解决问题?
-
可能。我实际上是在考虑创建一个进程对象,它可以在某些凭据下执行控制台应用程序(实际上类似的想法)。
-
你写信到哪里?我相信无论管理员权限如何,当前用户都允许写入 HKCU,但 HKLM 和 HKCR 仅限于管理员和系统。
-
您可以尝试使用
yourObject.Start.Verb="runas"(iirc) 启动此进程对象,但我认为您的用户可能会收到 UAC 提示。这有关系吗? -
哦,没关系,注册表部分不是你的问题
标签: c# windows-services manifest