安装软件后就修改了系统日期格式,这个是怎么做的?

surlew 2009-10-08 09:20:29
我在电脑上安装了某个软件后,系统日期格式就变了,请问这是怎么实现的?
...全文
214 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
surlew 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lzsh0622 的回复:]
在软件启动时处理,因为这个软件需要这种格式。
如果有人在控制面板改回去了,安装时的设置就白设置了。
[/Quote]

说得有道理,上面是我找到的c#代码修改系统日期格式的,大家可以参考!


感谢大家的回复,结贴了!
surlew 2009-10-08
  • 打赏
  • 举报
回复

//本代码修改系统时间的显示格式为双位。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace SetSystermTime
{
public class SetSystermTime
{
[DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")]
public static extern int GetSystemDefaultLCID();
[DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")]
public static extern int SetLocaleInfo(int Locale, int LCType, string lpLCData);

public const int LOCALE_SLONGDATE = 0x20;
public const int LOCALE_SSHORTDATE = 0x1F;
public const int LOCALE_STIME = 0x1E;

public static void SetTimeForMat()
{
try
{
//读写注册表
RegistryKey ST = Registry.CurrentUser;
RegistryKey ST1 = ST.OpenSubKey("Control Panel\\International", true);
if (ST1 == null)
{
// ST1.CreateSubKey("sTimeFormat");
ST1.SetValue("sTimeFormat", "HH:mm:ss");
}
else
{
ST1.SetValue("sTimeFormat", "HH:mm:ss");
}


int x = GetSystemDefaultLCID();
SetLocaleInfo(x, LOCALE_SSHORTDATE, "yyyy-MM-dd"); //短日期格式
SetLocaleInfo(x, LOCALE_SLONGDATE, "yyyy年MM月dd日"); //长日期格式
SetLocaleInfo(x, LOCALE_STIME, "HH:mm:ss tt"); //时间格式
}
catch
{

}
}

}
}
lovexilove 2009-10-08
  • 打赏
  • 举报
回复
学习了
lzsh0622 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lzsh0622 的回复:]
在软件启动时处理,因为这个软件需要这种格式。
如果有人在控制面板改回去了,安装时的设置就白设置了。
[/Quote]

用到的两个API函数:
GetLocaleInfo 取得格式
SetLocaleInfo 设置格式

楼主的是设置系统时期格式,不是设置系统时间。
lzsh0622 2009-10-08
  • 打赏
  • 举报
回复
在软件启动时处理,因为这个软件需要这种格式。
如果有人在控制面板改回去了,安装时的设置就白设置了。
wuyq11 2009-10-08
  • 打赏
  • 举报
回复
[ StructLayout( LayoutKind.Sequential )]
public class SystemTime
{
public ushort year;
public ushort month;
public ushort dayofweek;
public ushort day;
public ushort hour;
public ushort minute;
public ushort second;
public ushort milliseconds;
}

[ DllImport( "Kernel32.dll" )]
private static extern Boolean SetSystemTime([In,Out] SystemTime st);
public static bool SetSysTime(DateTime newdatetime)
{
SystemTime st = new SystemTime();
st.year = Convert.ToUInt16(newdatetime.Year);
st.month = Convert.ToUInt16(newdatetime.Month);
st.day = Convert.ToUInt16(newdatetime.Day);
st.dayofweek = Convert.ToUInt16(newdatetime.DayOfWeek);
st.hour = Convert.ToUInt16(newdatetime.Hour - TimeZone.CurrentTimeZone.GetUtcOffset(new DateTime(2001,09,01)).Hours);
st.minute = Convert.ToUInt16(newdatetime.Minute);
st.second = Convert.ToUInt16(newdatetime.Second);
st.milliseconds = Convert.ToUInt16(newdatetime.Millisecond);
return SetSystemTime(st);
}
surlew 2009-10-08
  • 打赏
  • 举报
回复
请问这是在安装的时候处理的还是怎么的?
cooolchen 2009-10-08
  • 打赏
  • 举报
回复
需要调用API 来实现
大体的代码如下:

[StructLayout   (LayoutKind.Sequential)]   
public struct SYSTEMTIME
{
public short Year;
public short Month;
public short DayOfWeek;
public short Day;
public short Hour;
public short Minute;
public short Second;
public short Miliseconds;
}


//api函数声明
[DllImport ("kernel32.dll", CharSet=CharSet.Ansi)]
public extern static bool SetSystemTime(ref SYSTEMTIME time);

private void button1_Click(object sender, System.EventArgs e)
{
//调用代码
SYSTEMTIME t = new SYSTEMTIME ();
t.Year = 2000;
t.Month = 1;
t.Day = 2;
t.Hour = 12-8; //这个函数使用的是0时区的时间,对于我们用+8时区的,时间要自己算一下.如要设12点,则为12-8
t.Minute = 5;
bool v = SetSystemTime(ref t);
Console.WriteLine(v.ToString());
}
1.linux系统介绍 以windows为内核的操作系统有哪些:win10   win8   win7  xp  系统    windows server 以linux为内核的操作系统有哪些:centos  ubuntu  debian   windows和linux  linux:服务器   安全    稳定 高效    windows:办公  家用  2.安装linux注意事项 对centos系统 的基本使用   有哪些文件夹   对文件/文件夹 进行操作  创建 删除  修改 移动 复制   写入 home 存放所有用户文件的根目录  soft :安装软件 cd  ll mkdir 创建文件  touch 空文件  echo sdsd>a.txt       vi a.txt vi c.txt  打开文件  按下i键  改为写入的模式    写完之后保存: 先按下esc 按键再按下:w 保存 :q退出  :wq    写完之后不想保存 强制退出  esc  :q! 删除文件/文件夹 rm -rf a.txt  b.txt rm -rf soft 复制 如果复制文件 cp  要复制的文件名   复制出来的文件名子    cp  a.txt   a1.txt 如果复制的是文件夹的 cp -r soft/   soft1 展示一个文件中的内容 cat  移动文件  mv  temp1   temp2 重命名 mv  temp1   temp2 查找: find /(查找的路径)  -name   *.txt    b 清屏  clear tab 按键 可以帮助我们把输入的内容补全   3.配置局域网  需要通过ssh软件远程操作linux系统 远程操作centos系统  在windows操作系统中通过一款软件来远程操作虚拟电脑中的centos系统  ssh软件: xshell  secureCRT 第一步在win10系统中下载并且安装ssh软件 secureCRT    第二步:只要知道centos系统所在电脑的公网IP  登录账户和密码      /  win10和centos系统所在的两台电脑在同一个局域网内  局域网IP  登录账户和密码 第三步:centos系统 进行局域网的设置 往网卡中写入一些数据   win10写入的方式:桌面的化操作和centos系统写入的方式是不一样的  ip 网关 子网掩码 NM_conteolle。。。 命令  找到往网卡写入数据的文件    重新启动网络服务 开启22端口   重启防火墙服务 网络桥接网络  *************************端口是否开启  4.配置外网  下载软件1.下载并且安装系统中 node.js环境   npm install bootstrap   默认的镜像库 centos系统    yum install  服务名     默认的镜像库  2.自己下载服务  wget 服务的网络地址 自己单独安装  比较灵活 安装难度大 windows系统  exe文件 linux       rpm包

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧