如何以管理员权限从 Windows 服务运行程序
Posted
技术标签:
【中文标题】如何以管理员权限从 Windows 服务运行程序【英文标题】:How to run a program from windows service with administrator privileges 【发布时间】:2014-12-03 04:53:40 【问题描述】:我创建了一个在 Windows 启动时运行程序的 Windows 服务,但使用此解决方案,程序在没有管理员权限的情况下运行。但是,如果我通过单击“开始”菜单上的程序快捷方式来运行该程序,它将以管理员权限运行
我用这段代码来运行程序:
ApplicationLoader.PROCESS_INFORMATION procInfo;
ApplicationLoader.StartProcessAndBypassUAC(program_name, out procInfo);
那么如何以管理员权限运行这个程序呢? 谢谢
【问题讨论】:
有还是没有?我想你想问如何在没有提升权限的情况下从 Windows 服务启动程序。 我需要以管理员权限运行 转到开始 > 运行,然后输入services.msc
并运行它。然后找到服务,右键查看属性。转到登录选项卡,请告诉我们登录选项卡上设置了哪些用户。
这是本地系统帐户
Avoiding UAC but launching an elevated process using a windows service 的可能重复项
【参考方案1】:
以管理员身份运行(程序)
右键单击并选择“以管理员身份运行”(一次性/临时)
或右键单击并选择属性> 兼容性> 选中“以管理员身份运行此程序”(永久设置;也可以方便地在快捷方式上设置此属性(这基本上是开始菜单项))
不以管理员身份运行(服务)
对于服务,要使其不以管理员身份运行,请打开服务管理单元(从命令提示符运行services.msc
)并右键单击以编辑服务属性,然后在“登录”选项卡上更新用户信息.
更新
您似乎使用了 CodeProject 文章中的一些代码,该文章包装了 Windows API 函数 CreateProcessAsUser
(http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite)。确保您阅读了该文章并按照步骤操作。您可能没有在服务上设置正确的用户,或者您当前的用户可能没有正确的权限,或者可能不是管理员的成员等。
【讨论】:
但是当我从 Windows 服务启动这个程序时,它不能以管理员身份运行 这与您在问题中所说的相反。请查看并更新您的问题。此外,同样的事情也适用.. 只需查看服务的属性,将登录选项卡更改为管理员用户。 IIRC,该代码仅适用于 Windows Vista,不适用于更高版本的 Windows。以上是关于如何以管理员权限从 Windows 服务运行程序的主要内容,如果未能解决你的问题,请参考以下文章