我正在使用 QWINSTA.EXE 从我们网络上的终端服务器获取会话/用户列表(我的计算机是 Windows 7 Pro,TS 是 Windows Server 2003)。我将此函数的输出通过管道传输到一个文本文件,然后处理该文本文件以获取我需要的信息。如果有更好的方法,请原谅并跳过我冗长的帖子,并指出我正确的方向。
我的问题是,在ShellExecute()
没有ShellExecuteEx()
首先提升权限的情况下,我什至不允许我执行该程序。如果您转到未提升的命令提示符,您甚至不会在目录列表中看到 EXE(也没有隐藏属性)。使用“以管理员身份运行”命令提示符,您可以很好地查看/使用它。无论如何,您都可以从 Windows 资源管理器中看到它。
我摸索了一下,发现了这个宝石:RunFileAsAdminWait()
如果我尝试直接调用 QWINSTA.EXE 则不起作用(它会失败并显示错误消息:)System Error. Code: 2. The system cannot find the file specified.
。如果我将所有内容打包成一个批处理文件并RunFileAsAdminWait()
在批处理文件上使用,那么它似乎工作正常。
我知道,但没用过,WTSEnumerateSessions()
. 除了我刚刚链接到的 MSDN 链接之外,我找不到太多关于它的信息。任何人都知道使用 Delphi 的 API 的大量参考代码吗?它在 Delphi 2007 的 Windows 单元中不可用。
问题:
是否有另一种/更好的方法来执行需要管理员权限才能访问的 EXE?或者这就是这里发生的事情?
有没有更好的方法来获取终端服务器上的活动会话列表,尤其是不需要提升权限的会话?
如果我坚持使用这种方法,我是否以“正确的方式”进行操作?
感谢您提供的任何帮助!