程序中修改的办法如下, 不过这段代码有一个问题, 前面的代码要重启才起作用。
//强制写日期格式
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;