如何通过注册表修改“区域设置”中的日期,使得它的格式是"YYYY-MM-DD"?(20分)

  • 主题发起人 主题发起人 maomicn
  • 开始时间 开始时间
M

maomicn

Unregistered / Unconfirmed
GUEST, unregistred user!
如何通过注册表修改“区域设置”中的日期,使得它的格式是"YYYY-MM-DD"?谢了。
 
改注册表不好,可在程序运行时指定日期格式
DateSeparator := '-';
ShortDateFormat := 'yyyy-mm-dd';
 
好像要发出一个系统通知消息,具体的我忘了...
 
1、在控制面板上的“区域设置”把日期格式修改成“yyyy-mm-dd”;
2、对注册表进行“yyyy-mm-dd”字符寻找;
 
程序中修改的办法如下, 不过这段代码有一个问题, 前面的代码要重启才起作用。

//强制写日期格式
try
htwWriteRegisry('sShortDate','yyyy-MM-dd' ,HKEY_CURRENT_USER, '/Control Panel/International');
htwWriteRegisry('sShortDate','yyyy-MM-dd' ,HKEY_USERS, '/.DEFAULT/Control Panel/International');
setlocaleinfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SDATE,'yyyy-MM-dd');
except
end;
DateSeparator := '-';
shortdateformat:='yyyy-mm-dd';
ShortTimeFormat:='hh:mm:ss';
s:=application.UpdateFormatSettings;


function htwReadRegisry( RegKey :string ; Default :string ; MyRootKey : Hkey; MyOpenKey :string): string ;
var
Registry: TRegistry;
S : string;
begin
Registry:= TRegistry.Create;
try
begin
Registry.RootKey :=MyRootKey; // HKEY_CURRENT_USER;
Registry.OpenKey(MYOpenKey,false); // Registry.OpenKey('/Software/MachineAdministrator',false);
S := Registry.ReadString(RegKey);
end
finally
begin
Registry.CloseKey;
Registry.Free;
end;
if Trim(S)='' then Result := Default
else Result := S;
end;

end;

procedure htwWriteRegisry(RegKey :string ;asValueTobewrited : string; MyRootKey : Hkey; MyOpenKey :string );
var
Registry: TRegistry;
begin
Registry:= TRegistry.Create;
try
begin
Registry.RootKey :=MyRootKey; // HKEY_CURRENT_USER;
Registry.OpenKey(MyOpenKey,true); //Registry.OpenKey('/Software/MachineAdministrator',true);
Registry.WriteString(RegKey,asValueTobewrited);
end
finally
begin
Registry.CloseKey;
Registry.Free;
end;
end;
end;

 
后退
顶部