我刚刚(2014年8月)看到了一个使用命令行的程序的报告
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication"
Run Code Online (Sandbox Code Playgroud)
这是如何运作的?我认为第一个参数应该是DLL的名称(mshtml),但是rundll32如何解析该命令行?
rundll参考:http: //support.microsoft.com/kb/164787
在最新版本的 Win10 上,可以将活动代码页 (ACP) 设置为 UTF-8 代码页。正如此处所讨论的,可以将系统区域设置(用于在 Windows API 的“A”版本和“W”版本之间进行映射)设置为使用 UTF-8 代码页。
脚本如何检测 UTF-8 代码页是否正在使用?
正如此处和此处所讨论的,通常可以使用 WMI 来获取系统代码页 ID:
For Each os In wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem")
cs = os.CodeSet
Next
Run Code Online (Sandbox Code Playgroud)
当我在 Win10 上尝试该操作时,设置对非 unicode 程序使用美式英语的“beta”utf-8 支持,WMI 继续报告代码页为 1252。尽管情况显然并非如此(代码页 1252 有128 处有一个代码点,但 49800 处没有代码点:UTF-8 49800 处有一个代码点,128 处没有代码点)。
脚本如何检测实际系统区域设置是否使用 UTF-8 代码页?
众所周知(???),Delphi 对接口对象的接口引用进行引用计数,并在其引用计数降至零时销毁这些对象,通常是因为所有相关的接口变量都超出了范围。
假设我使用全局接口变量来引用持久对象:
type
tMySyncClass = class(TInterfacedObject,TmyInterface); ...
tMyAsyncClass = class(TInterfacedObject,TmyInterface); ...
var MyInterfaceVar : TmyInterface;
procedure MyProc();
begin
MyInterfaceVar := tMySyncClass.create();
....
MyInterfaceVar := tMyAsyncClass.create();
end
Run Code Online (Sandbox Code Playgroud)
调用 后MyProc,我有一个 的实例,并对其进行了tMyAsyncClass一个(全局)引用。MyInterface
我还有一个未引用的MySyncClass对象吗?重新分配是否会MyInterfaceVar触发第一个 ( SyncClass) 对象的销毁?
delphi ×1
interface ×1
javascript ×1
mshtml ×1
powershell ×1
reference ×1
rundll32 ×1
utf-8 ×1
vbscript ×1
windows-10 ×1
wmi ×1