是否可以使用Inno Setup将当前日期写入注册表项作为二进制数据? (如果它是一个字符串,那么它就很容易被别人修改)
在我的MFC c++项目中,我使用WriteProfileBinary
序列化DATE
变量。
最终,我需要能够使用。net c#将此值读取为DateTime
变量。我将使用通用程序数据键来存储值,并且只有if不存在。
[Registry]
适合二进制数据:
如果指定
binary
,设置将创建一个二进制(REG_BINARY
)值……如果数据类型是binary
,这是一个十六进制字节序列格式:"00 ff 12 34"
.
如何获取时间戳然后把它转换成所需的格式?
我看到这个问题(使用Inno Setup Pascal脚本编写二进制数据到注册表)这是有用的,也是在Inno Setup论坛,他们回应了我:
这是可能的,但你必须使用一些
[Code]
和RegWriteBinaryValue
函数。
但我仍然不清楚:
- 如何写入当前时间戳使用此函数到注册表?
- 如何以二进制格式编写,以便。net c#能够将其作为
DateTime
对象读取?
要将当前日期作为二进制值写入注册表,您可以这样做:
var
DateStr: string;
begin
DateStr := GetDateTimeString('yyyy/mm/dd', '-', ':');
RegWriteBinaryValue(
HKEY_AUTO, 'SoftwareMy CompanyMy Program', 'InstallDate', DateStr);
end;
它将导致:
C:>reg query "HKCUSoftwareMy CompanyMy Program"
HKEY_CURRENT_USERSoftwareMy CompanyMy Program
InstallDate REG_BINARY 323032312D31302D3039
如果你喜欢,你可以做更多的混淆。无论您做什么,用户都可以或多或少地修改值。