从在“用户”帐户下运行的服务调用OpenWindowStation

时间:2015-07-16 14:35:30

标签: c++ windows service impersonation privileges

我的服务启动了一个交互式客户端流程,其中包含与此类似的内容:https://msdn.microsoft.com/en-us/library/windows/desktop/aa379608(v=vs.85).aspx

当服务以本地系统登录时,它可以正常工作,如果它在管理员帐户 下运行,则可以正常工作SE_ASSIGNPRIMARYTOKEN_NAME SE_INCREASE_QUOTA_NAME 权限。

我的问题是,当使用标准用户帐户或本地服务时,它在 OpenWindowStation 时失败,错误代码为5(拒绝访问)。

// Get a handle to the interactive window station.
hwinsta = OpenWindowStation(_T("winsta0"),               // the interactive window station 
                            FALSE,                       // handle is not inheritable
                            READ_CONTROL | WRITE_DAC);   // rights to read/write the DACL

是否可以从标准用户帐户调用OpenWindowStation,或者我的服务必须在管理员帐户下运行?我几乎没有尝试所有本地政策

谢谢!

1 个答案:

答案 0 :(得分:1)

不幸的是,它无法完成,似乎只有管理员才能打开交互式电台。