我正在尝试使用TRegistry使用扩展的OpenWithProgids键。我看不到TRegistry可以写入这些值(需要使用REG_NONE类型。)我知道我可以使用API RegSetValueEx函数来设置这些值,但是我想知道我是否在TRegistry中缺少了可以做吧。
最佳答案
的确,TRegistry
不直接支持REG_NONE
值。但是,使用 protected hack,您可以诱使它创建零长度的二进制REG_NONE
值:
type
TRegistryHack = class(TRegistry);
....
TRegistryHack(Registry).PutData(ValueName, nil, 0, rdUnknown);
您需要使用 protected 技巧来访问作为 protected 成员的
PutData
。一种更干净的方法是使用从TRegistry
派生的类帮助器或真实类,但您明白了。