我正在尝试使用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派生的类帮助器或真实类,但您明白了。

10-08 04:48