Jer*_*non 1 delphi delphi-2007 terminal-services windows-7
我正在使用QWINSTA.EXE从我们网络上的终端服务器获取会话/用户列表(我的计算机是Windows 7 Pro,TS是Windows Server 2003).我将此函数的输出传递给文本文件,然后处理文本文件以获取我需要的信息.如果有更好的方法,请原谅并跳过我冗长的帖子并指出我正确的方向.
我的问题是,无论是ShellExecute()也不ShellExecuteEx()让我即使执行程序,而不必首先提升权限.如果您转到未提升的命令提示符,您甚至不会在目录列表中看到EXE(也没有隐藏属性).使用"以管理员身份运行"命令提示符,您可以正常查看/使用它.无论如何,您都可以从Windows资源管理器中看到它.
我戳了一下,发现了这个gem:RunFileAsAdminWait()如果我尝试直接调用QWINSTA.EXE(它失败并显示错误消息:),则无效System Error. Code: 2. The system cannot find the file specified..如果我将所有内容都包装到批处理文件中并RunFileAsAdminWait()在批处理文件上使用,那么它似乎工作正常.
我知道,但没有用过,WTSEnumerateSessions().除了刚刚链接到的MSDN链接之外,我还没有找到关于它的更多信息.有人知道从Delphi使用该API的大量参考代码吗?它在Delphi 2007的Windows单元中不可用.
问题:
是否有另一种/更好的方法来执行需要管理员权限甚至访问的EXE?或者甚至是这里发生了什么?
有没有更好的方法来获取终端服务器上的活动会话列表,尤其是不需要提升权限的会话列表?
如果我坚持使用这种方法,我是以"正确的方式"做到的吗?
感谢您提供的任何帮助!
QWINSTA.EXE您必须使用 Remote Desktop Services API Functions此API的delphi转换来检查JwsclTerminalServer作为JEDI Windows安全代码库(JWSCL)一部分的单元,而不是管道结果.在您枚举终端服务器的情况下,您可以使用TJwTerminalServer.EnumerateSessions方法.