任何人都可以告诉我是否可以从dll导出记录?如果是,那该怎么办呢?
我的记录看起来像:
variables = record
name : string;
units : string;
value : double;
end;
Run Code Online (Sandbox Code Playgroud) 我正在使用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?或者甚至是这里发生了什么?
有没有更好的方法来获取终端服务器上的活动会话列表,尤其是不需要提升权限的会话列表?
如果我坚持使用这种方法,我是以"正确的方式"做到的吗?
感谢您提供的任何帮助!
例如,如果我有以下内容:
type
TVArray = array of array of Variant;
var
MyArray : TVArray;
Run Code Online (Sandbox Code Playgroud)
然后我将一堆元素添加到MyArray中,使其具有1000个数组,每个数组包含30个变体.
如果我想立即执行此操作,释放该内存的最佳或首选方法是什么?
MyArray := nil;
Run Code Online (Sandbox Code Playgroud)
要么
SetLength(MyArray, 0);
Run Code Online (Sandbox Code Playgroud)
要么
Finalize(MyArray);
Run Code Online (Sandbox Code Playgroud)
或者我是否需要先对子阵列做些什么?各个变体包含哪些内容?