gpt4 book ai didi

java - CreateProcessAsUser win api 不适用于非 win7 平台

转载 作者:行者123 更新时间:2023-12-01 05:42:01 25 4
gpt4 key购买 nike

我正在使用 win-api 函数:登录用户加载配置文件创建进程作为用户

使用java和jniwrapper。

我将我的应用程序作为服务进程(本地系统帐户)运行。

如果我使用 CreateProcessWithLogon - 它仅在我不从服务运行时才有效(只是常规的独立应用程序)。

该进程在 windows 7 上创建成功,但在 win xp 和 win 2003 服务器上创建失败。

你有什么线索吗?如何在win平台上管理进程/用户权限?

谢谢......

最佳答案

Windows 处理服务的方式以及它们交互的方式在 NT 6.0(Vista、Server 2003 R2)周围发生了变化。它通常是一个复杂的主题,因为它涉及流程的创建,尤其是从应该是非交互式的东西创建 UI。要理解它,通常需要充分了解 Windows 上的 session 、Winsta 和桌面。

更改(名为“ session 0 隔离”)记录在此处: http://msdn.microsoft.com/en-us/windows/hardware/gg463353 。它指出从服务显示 UI 的正确方法是使用 CreateProcessAsUser 生成一个新进程,但您已经知道这一点,因为您的 Windows 7 计算机正在运行。

如果我没记错的话,CreateProcessAsUser 的行为也发生了变化:在以前的版本中,它不会自动将用户添加到 winsta 和桌面(它们是安全对象,即具有 ACL 的对象,如文件):

“如果应用程序在lpDesktop成员中指定了一个桌面,那么它就是应用程序有责任添加权限指定的用户帐户到指定的窗口站和桌面。”

这句话摘自这里: http://support.microsoft.com/kb/165194非常有用的文章!包括有关如何执行所有 ACL 的代码示例东西(不幸的是,非托管代码......)

此外,您还可以在这里找到其他相同的信息: http://msdn.microsoft.com/en-us/library/aa379608%28v=vs.85%29.aspx

关于java - CreateProcessAsUser win api 不适用于非 win7 平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6898361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com