You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RC文件中存储加密字符串?

可以在RC文件中存储加密字符串

当然可行,RC文件不仅能存储图片、动图这类二进制资源,也完全支持嵌入字符串类资源,正好能满足你复用源码、仅通过替换资源文件适配不同客户的需求。

具体实现方式

方式1:直接在RC文件中定义字符串

你可以沿用RCDATA类型,把加密字符串用双引号包裹后直接写入RC文件,示例如下:

splash RCDATA splash.png
logo RCDATA logo.png
working RCDATA working.gif
customer_key RCDATA "wlny'q|*lz-s‡q~‚y5…}8|"

如果字符串本身包含双引号,只需用反斜杠转义(写成\")即可。

方式2:通过外部文本文件嵌入字符串

如果字符串包含大量特殊字符,或者需要针对不同客户单独维护,更稳妥的方式是把加密字符串保存为独立文本文件(比如customer_key.txt),再在RC文件中引用:

customer_key RCDATA customer_key.txt

这种方式能避免RC文件内的转义问题,后续替换客户专属字符串时,只需替换对应的文本文件,无需修改RC本身。

注意事项

  • 编码适配:由于你的字符串包含非ASCII特殊字符(比如‡、‚、…),要确保RC文件或外部文本文件的编码为UTF-8(带BOM),且与程序读取资源时的编码逻辑一致,避免出现乱码。
  • 资源读取逻辑:RCDATA会原样存储内容,不会自动添加字符串终止符。在程序中读取时,按二进制流读取即可,若需要作为字符串使用,可自行追加终止符(比如\0)。

以Delphi为例,读取该资源的示例代码:

function GetCustomerKey: string;
var
  ResStream: TResourceStream;
begin
  ResStream := TResourceStream.Create(HInstance, 'customer_key', RT_RCDATA);
  try
    SetLength(Result, ResStream.Size div SizeOf(Char));
    ResStream.ReadBuffer(Result[1], ResStream.Size);
  finally
    ResStream.Free;
  end;
end;

内容的提问来源于stack exchange,提问作者delphirules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:43:11