java写入注册表
Java写入注册表值
JAVA 2009-11-12 16:16:19 阅读153 评论0 字号:大中小订阅
我们经常需要将我们的程序中的设定,如窗口位置,开启过的文件,用户的选项设定等数据记录下来,以做便用户下一次开启程序能继续使用这些数据。
以前我们通常的做法是使用Properties类,它提供以下方法:
void load(InputStream inStream)
void store(OutputStream out, String header)
String getProperty(String key, String defaultValue)
String getProperty(String key)
这些方法让我们很容易的存取设定数据。
另外的办法是使用ResourceBundle这个类来储存设定数据,甚至有些程序作者使用一个自定结构的文件来储存设定数据。
现在好了,JDK1.4为我们提供的java.util.prefs包,为我们提供了另一种选择,里面有一个Preferences类,能让以上的工作变得极其轻松 !
写VB程序的人常常用SaveSetting函数和getSettging来存取注册表中的用户设定数据。
而Java的Preferences类也提供了类似的机制。
Preferences类在不同的平台中有不同的实现方式。
而在Windows平台中,Preferences是将数据保存在注册表中的,而在其它平台中的实现我就不得而知了(我对Linux等系统都不太了解).
但不管怎样,都是通过相同的接口来使用的,程序作者可以不管实现细节。
一、建立Preferences对象
为了区分不同的应用程序的参数项,在建立Preferences时要指定一个节点路径。
Preferences是一个抽象类,提供了一系列静态方法和抽象方法来操作参数项:
抽象方法:
Preferences userData = erNodeForPackage( this );
Preferences sysData = Preferences.systemNodeForPackage( this );
这两个方法是从指定的类所在的包( package )返回一个节点路径,如this是javax.swing.JComponent,则返回 / javax / swing
静态方法:
Preferences userData = erRoot().node( " /com/sunway/spc " ); Preferences sysData = Preferences.systemRoot().node( " /com/sunway/spc " );
以上每种方式提供了两套操作方法。
其中一套是用户参数项,另一套是系统参数项。
在Windows平台中,用户参数项在注册表中的根节点是:
HKEY_CURRENT_USER\Software\JavaSoft\Prefs
系统参数项在注册表中的根节点是:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs
而我们指定的节点路径是位于这些根节点之下的.
二、如何读写数据
Preferences提供了多种类型数据的读写方法。
先来看写(put)的方法:
put(String key, String value)
putBoolean(String key, boolean value)
putByteArray(String key, byte value[])
putDouble(String key, double value)
putFloat(String key, float value)
putInt(String key, int value)
putLong(String key, long value)
下面的是读(get)的方法,
get(String key, String default )
getBoolean(String key, boolean default )
getByteArray(String key, byte default [])
getDouble(String key, double default )
getFloat(String key, float default )
getInt(String key, int default )
getLong(String key, long default )
注意,每一种get方法的第二个参数需要我们为它指定缺省的参数。
除了以上方式之外,Preferences还允许我们将它的数据导出到一个XML文件保存:
void exportNode(OutputStream os)
void exportSubtree(OutputStream os)
我们可以导出一个节点,或是导出整个子节点树。
三、Preferences的一个演示
以上的讲解足可以写一个示例来看看Preferences是如何为我们工作的,看看下面的例子:
import java.io. * ;
import java.util.prefs. * ;
public class PrefsDemo {
public static void main(String args[])
{
String keys[] =
{ " sunway " , " copyright " , " author " } ;
String values[] =
{ " sunway technology company " , " copyright 2002 " , " turbochen@ " } ;
/**/ /* 建立一个位于user root下的/com/sunway/spc节点参数项 */
Preferences prefsdemo =
erRoot().node( " /com/sunway/spc " );
/**/ /* 储存参数项 */
for ( int i = 0 ; i < keys.length; i ++ )
{
prefsdemo.put(keys[i], values[i]);
}
/**/ /* 导出到XML文件 */
try
{
FileOutputStream fos = new FileOutputStream( " prefsdemo.xml " );
prefsdemo.exportNode(fos);
} catch (Exception e)
{
System.err.println( " Cannot export nodes: " + e);
}
/**/ /* 去掉注释可以清除注册表中的参数项 */
/**/ /* try
{
prefsdemo.removeNode();
} catch (BackingStoreException e)
{
} */
}
}
运行的结果是在注册表中添加了相应数据:四、用下面方法可取回存在注册表中的数据:
import java.io. * ;
import java.util.prefs. * ;
public class PrefsDemo1 {
public static void main(String args[])
{
/**/ /* 建立一个位于user root下的/com/sunway/spc节点参数项 */
Preferences prefsdemo =
erRoot().node( " /com/sunway/spc " );
System.out.println(prefsdemo.get( " sunway " , " OK " ));
}
}
运行结果:C:\java > java PrefsDemo1sunway technology company
C:\java
以上介绍了Preferences功能,要了解更多Preferences的方法,请查阅JDK文档java.util.prefs.Preferences。
注入注册表的正确方法
注入注册表的正确方法注册表这东西呢,就像是电脑的一个大管家的小本本,里面记着各种各样的设置信息。
不过可不能随便乱搞哦。
一般来说呢,在注入注册表之前,你得先知道自己要改啥。
比如说,你想调整一下软件的某些默认设置,或者是让系统在启动的时候自动运行某个程序。
这时候就可能需要动注册表啦。
你要是Windows系统的话,有个很简单的办法找到注册表编辑器。
按下Win+R 键,然后输入“regedit”,就像打开一个神秘的魔法盒子一样,注册表编辑器就出来啦。
但是呢,宝子,可别一进去就瞎改哦。
在注入新的信息之前,最好备份一下注册表。
就像出门前给自己留个后路一样。
在注册表编辑器里,你可以找到“文件”菜单,然后选择“导出”,这样就把整个注册表备份好啦,万一改错了还能恢复呢。
那真正注入的时候呢,你得找到对应的键值。
这就有点像在大管家的小本本里找特定的一页。
比如说,你想让某个程序开机自启,你就要找到“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run”这个键值。
然后在右边的窗口里,根据情况添加新的键值或者修改已有的。
不过要小心数据类型哦,要是填错了类型,就像给机器人喂错了食物,它可不会听话啦。
还有哦,宝子,有些软件会自带一些注册表注入的脚本或者工具。
如果是这种情况,你就按照软件的说明来操作就好啦。
就像跟着大厨的菜谱做菜一样,一步一步来准没错。
在注入注册表之后呢,可能需要重启一下电脑或者相关的程序,这样新的设置才能生效。
就像给花浇了水,要等一会儿才能看到花开得更艳一样。
宝子,注册表这东西虽然很有用,但是就像玩火一样,要小心谨慎。
要是你不太确定自己在做什么,最好先去网上查查资料,或者问问懂行的朋友。
可别因为一时好奇就把电脑搞出问题来啦。
毕竟咱们的小电脑也是要好好爱护的呢。
JAVA_RMI使用快速入门
JAVA_RMI使用快速入门Java RMI(Remote Method Invocation,远程方法调用)是一种用于实现分布式系统的Java API,它允许在不同的Java虚拟机上通过网络调用远程对象的方法。
在这篇文章中,我们将快速入门Java RMI,并了解如何使用它来创建一个简单的分布式系统。
1.理解RMI的概念RMI的基本思想是将远程调用看作是本地调用的一种特殊形式,在RMI中,客户端和服务器可以通过网络传输Java对象的引用。
客户端可以通过远程对象的引用来调用它的方法,就像调用本地对象一样。
2.创建远程接口首先,我们需要定义一个远程接口,它列出了远程对象上可用的方法。
这个接口必须扩展java.rmi.Remote接口,并且每个方法都必须声明抛出java.rmi.RemoteException异常。
下面是一个简单的例子:```javaimport java.rmi.Remote;import java.rmi.RemoteException;public interface Hello extends RemoteString sayHello( throws RemoteException;```3.实现远程接口接下来,我们需要实现远程接口,并发布它作为一个RMI对象。
通过扩展java.rmi.server.UnicastRemoteObject类并实现远程接口,我们可以创建一个远程对象。
下面是实现上面接口的一个例子:```javaimport java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class HelloImpl extends UnicastRemoteObject implements Hellopublic HelloImpl( throws RemoteExceptionsuper(;}public String sayHello( throws RemoteExceptionreturn "Hello, world!";}```4.注册远程对象在将远程对象发布到网络之前,我们需要创建一个注册表来管理远程对象的绑定。
java创建excel的常用方法
java创建excel的常用方法
Java中创建Excel文件有多种方法,以下是一些常用的方法:
1. Apache POI库,Apache POI是一个用于读写Microsoft Office文件的开源库,可以使用它来创建和编辑Excel文件。
通过POI库,可以创建工作簿(Workbook)、工作表(Sheet)、单元格(Cell)等对象,然后填充数据并保存为Excel文件。
这是Java中
创建Excel文件最常用的方法之一。
2. JExcelApi库,JExcelApi也是一个用于操作Excel文件的
开源库,它提供了创建、读取和修改Excel文件的功能。
通过JExcelApi,可以创建工作簿、工作表,并向单元格中写入数据,最
后保存为Excel文件。
3. 使用Java的CSV库,虽然CSV文件不是真正的Excel文件,但在某些情况下也可以满足需求。
Java中有一些CSV库可以用来创
建和编辑CSV文件,例如OpenCSV和uniVocity等。
这些库可以将
数据写入CSV格式的文件,然后可以通过Excel等软件打开并保存
为Excel文件。
4. 使用第三方Excel库,除了上述提到的库外,还有一些第三
方的商业库,如Aspose.Cells,可以用来创建和编辑Excel文件。
这些库通常提供了更丰富的功能和更好的性能,但需要购买许可证。
总的来说,以上列举的方法是Java中创建Excel文件的常用方法。
选择合适的方法取决于具体的需求和项目的要求。
希望这些信
息能够帮助到你。
JavaWeb实现用户登录与注册功能(服务器)
JavaWeb实现⽤户登录与注册功能(服务器)本⽂实例为⼤家分享了JavaWeb实现⽤户登录与注册功能的具体代码,供⼤家参考,具体内容如下⽤到的知识客户端:HTML CSS JS (JQuery)服务器:JAVA基础 JSP Servlet JDBC Tomcat数据库:MySQL⽤到的Jar包 druid数据库连接池 dbutils JDBC数据库操作⼯具 MySQL jar包总体结构:思路:服务器部分采⽤JavaEE三层架构(1)、表现层:通俗讲就是展现给⽤户的界⾯,即⽤户在使⽤⼀个系统的时候他的所见所得。
(2)、业务逻辑层:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
(3)、数据访问层:该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
先创建基本的⽂件夹架构,三层的⽂件夹依次为web ,servlet ,DAO。
此外还有其他相关⽂件夹⼯具类utils,JAVABean类pojo,测试类test 。
依次实现从DAO层到Servce层再到Web层。
⽂件夹架构资源⽂件 jdbc.propertiesusername=rootpassword=123456url=jdbc:mysql://localhost:3306/bookdriverClassName=com.mysql.jdbc.DriverinitialSize=5maxActive=10⼀、DAO层0.写好JAVABean User类package com.book.pojo;public class User {private Integer id;private String username;private String password;private String email;public User() {}public User(Integer id, String username, String password, String email) {this.id = id;ername = username;this.password = password;this.email = email;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", email='" + email + '\'' +'}';}}1.先实现数据连接JDBCUtilspackage com.book.utils;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;public class JDBCUtils {private static DruidDataSource druidDataSource;//数据库连接池初始化static {try {InputStream resourceAsStream = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");//类加载器默认是从classPath路径加载资源 Properties properties = new Properties();properties.load(resourceAsStream);//创建数据库连接池druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {System.out.println("数据库连接池初始化异常");}}//获取数据库连接池中的连接public static Connection getConnection() {Connection connection= null;try {connection = druidDataSource.getConnection();} catch (SQLException throwables) {throwables.printStackTrace();}return connection;}public static void close(Connection connection) {try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}public static void main(String[] args) {JDBCUtils jdbcUtils=new JDBCUtils();System.out.println(jdbcUtils.getConnection());}}2.测试连接是否成功3.编写BaseDAO 实现对数据库的基本通⽤操作package com.book.DAO;import com.book.utils.JDBCUtils;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanHandler;import mons.dbutils.handlers.BeanListHandler;import mons.dbutils.handlers.ScalarHandler;import java.sql.Connection;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public abstract class BaseDAO {private QueryRunner queryRunner=new QueryRunner();//数据库通⽤操作,使⽤dbutils来操作//⽤来执⾏updata,delete,insertpublic int updata(String sql,Object...objects){Connection connection= JDBCUtils.getConnection();try {return queryRunner.update(connection,sql,objects);//返回影响的⾏数} catch (SQLException throwables) {throwables.printStackTrace();}return -1;}//⽤来执⾏查询操作public <T>T queryForOne(Class<T>clazz,String sql,Object...objects){Connection connection=JDBCUtils.getConnection();try {return queryRunner.query(connection,sql,new BeanHandler<T>(clazz),objects); } catch (Exception throwables) {throwables.printStackTrace();}return null;}//查询多个结果public <T>List<T> queryForList(Class<T>clazz,String sql,Object...objects){Connection connection=JDBCUtils.getConnection();List<T>list=new ArrayList<>();try {list=queryRunner.query(connection,sql,new BeanListHandler<T>(clazz),objects); } catch (SQLException throwables) {throwables.printStackTrace();}return list;}//查询单个数public Object queryForSingleValue(String sql,Object...objects){Connection connection= JDBCUtils.getConnection();try {return queryRunner.query(connection,sql,new ScalarHandler(),objects);} catch (SQLException throwables) {throwables.printStackTrace();}return null;}}4.编写UserDAO接⼝确定需要的操作package com.book.DAO;import er;public interface UserDAO {// 注册时判断是否该⽤户名已经被注册根据⽤户名查询⽤户信息如果返回null说明没有该⽤户public User queryUserByUsername(String username);//注册成功保存⽤户信息public int saveUser(User user);//登录操作根据⽤户名和密码查询⽤户查不到返回nullpublic User queryUserByUsernameAndPassword(String username,String password);}erDAOImpl实现UserDAO接⼝package com.book.DAO;import er;//所犯错误:继承的⼦类会有⽗类的全部⽅法,不要在⼦类中声明⽗类对象,调⽤⽗类⽅法public class UserDAOimpl extends BaseDAO implements UserDAO{@Overridepublic User queryUserByUsername(String username) {String sql="select * from users where username=?";User user =queryForOne(User.class,sql,username);return user;}//所犯错误:输⼊的邮箱不能重复@Overridepublic int saveUser(User user) {String sql="INSERT INTO `users`(`username`,`password`,`email`) VALUES(?,?,?)";int n;n = updata(sql,user.getUsername(),user.getPassword(),user.getEmail());return n;}@Overridepublic User queryUserByUsernameAndPassword(String username, String password) {String sql="select * from users where username=? and password=?";User user=queryForOne(User.class,sql,username,password);return user;}}⼆、Servlet层erServce接⼝确定业务需要的⽅法,⽤来与Web层进⾏交互package com.book.servlet;import er;//业务层⼀个业务⼀个⽅法public interface UserServce {//注册业务注册成功将⽤户保存到数据库中public void registUser(User user);//登录业务public User login(User user);//检查⽤户名是否可⽤返回true表⽰⽤户名已存在public boolean existUsername(String username);}erServceImpl类实现UserServce接⼝package com.book.servlet;import erDAO;import erDAOimpl;import er;public class UserServceImpl implements UserServce {private UserDAO userDAO=new UserDAOimpl();@Overridepublic void registUser(User user) {userDAO.saveUser(user);}@Overridepublic User login(User user) {return userDAO.queryUserByUsernameAndPassword(user.getUsername(),user.getPassword()); }@Overridepublic boolean existUsername(String username) {//⽤户名不存在if(userDAO.queryUserByUsername(username)==null){return false;}else {return true;}}}三、Web层1.注册操作package com.book.web;import er;import erServce;import erServceImpl;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class RegistServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { UserServce userServce=new UserServceImpl();//获取请求参数String username=req.getParameter("username");String password=req.getParameter("password");String email=req.getParameter("email");String code=req.getParameter("code");//判断验证码是否正确忽略⼤⼩写if("6n6np".equalsIgnoreCase(code)){//判断是否存在⽤户名if(!userServce.existUsername(username)){//不存在则将注册信息写⼊数据库User user=new User(null,username,password,email);userServce.registUser(user);//请求转发到注册成功页⾯req.getRequestDispatcher("/pages/user/regist_success.jsp").forward(req,resp);}else{System.out.println("⽤户名已存在");//跳转到注册页⾯req.getRequestDispatcher("/pages/user/regist.jsp").forward(req,resp);}}else {System.out.println("验证码错误");//跳转到注册页⾯req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp);}}}2.登录操作package com.book.web;import er;import erServce;import erServceImpl;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class LoginServlet extends HttpServlet {private UserServce userServce=new UserServceImpl();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求参数String username=req.getParameter("username");String password=req.getParameter("password");User user=new User(null,username,password,null);//判断⽤户的账号密码是否正确if(userServce.login(user)!=null){//登录成功跳转到登录成功页⾯System.out.println("登录成功");req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req,resp);}else{//账号或密码不正确System.out.println("账号或密码不正确");req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp);}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
批处理操作注册表完全攻略(读取注册表写入注册表等)
批处理操作注册表完全攻略(读取注册表写⼊注册表等)⼀,批处理⽣成.Reg⽂件操作注册表 ⽤批处理中的重定向符号可以轻松地⽣成.reg⽂件。
然后⽤命令执⾏.reg⽂件即可! 这⾥,着重要了解.reg⽂件操作注册表的⽅法。
⾸先.reg⽂件⾸⾏必须是:Windows Registry Editor Version 5.00。
然后才是操作注册表的内容。
(就和从注册表中导出的⽂件格式⼀致) 1,创建⼦项 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\TTT] 在HKEY_LOCAL_MACHINE\SOFTWARE\下创建了⼀个名字为“TTT”的⼦项。
2,创建⼀个项⽬名称复制代码代码如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\TTT] "Name"="TTT BLOG" "EMail"="taoether@" "URL"="/ttt/" "Type"=dword:02 这样就在[HKEY_LOCAL_MACHINE\SOFTWARE\TTT]下新建了:Name、EMail、 URL、Type这四个项⽬ Name、Email、URL的类型是“String Value” Type的类型是“DWORD Value” (附:windows注册表值类型: REG_SZ 字符串值 REG_BINARY ⼆进制值 REG_DWORD DWORD值 REG_MULTI_SZ 多字符串值 REG_EXPAND_SZ 可扩充字符串值) 3,修改键值 修改相对来说⽐较简单,只要把你需要修改的项⽬导出,然后⽤记事本进⾏修改,然后导⼊(regedit /s)即可。
prometheus remote write java示例 -回复
prometheus remote write java示例-回复Prometheus是一个开源的监控系统,用于记录和查询应用程序的指标数据。
它旨在提供高效、可靠的数据收集和分析,以帮助开发人员和运维团队更好地理解和优化他们的应用程序性能。
Prometheus的核心特性之一是可以通过远程写入(remote write)机制将指标数据推送到远程存储系统。
在本文中,我们将介绍如何使用Prometheus的Java客户端示例来实现远程写入功能。
首先,我们需要在Java项目中添加Prometheus客户端的依赖。
可以在Maven或Gradle项目中添加以下依赖:xml<dependency><groupId>io.prometheus</groupId><artifactId>simpleclient</artifactId><version>0.11.0</version></dependency>接下来,我们需要实例化一个Prometheus客户端。
在示例中,我们使用PushGateway作为远程写入的目标存储系统。
PushGateway是Prometheus提供的一个用于接收推送数据的中间层服务器,它将数据推送到Prometheus Server进行处理。
javaimport io.prometheus.client.CollectorRegistry;import io.prometheus.client.exporter.PushGateway;public class PrometheusRemoteWriteExample {public static void main(String[] args) {String pushGatewayAddress = "String jobName = "my_job";String instanceName = "my_instance";PushGateway pushGateway = newPushGateway(pushGatewayAddress);try {pushGateway.pushAdd(CollectorRegistry.defaultRegistry, jobName, instanceName);System.out.println("Metrics pushed successfully to Prometheus Push Gateway.");} catch (IOException e) {System.out.println("Failed to push metrics to Prometheus Push Gateway: " + e.getMessage());}}}在上述示例中,我们首先指定了PushGateway的地址。
修改java版本环境变量不生效
修改java版本环境变量不⽣效
修改java版本环境变量不⽣效
起因
先上图说明问题(电脑含有多个java版本,因为需要维护很⽼的项⽬,需要切换⾄以前的java版本,当然也可以不⽤修改环境变量,直接指定)
环境变量配置
正常 java -version 应该会输出 1.6 的版本,但是
只能说就离谱,好吧。
查⼀下 java 位置
明明是指定到了 1.6 版本的,但是 version 却是 1.7 的,莫⾮是上⾯ System32的导致的?
解决⽅法
⽅法⼀:修改注册表(不推荐)
把 1.6 的 java.exe 复制到 System32 (C:\Windows\System32)中,就上⾯的那俩地址
再次使⽤ java -version
不是吧,注册表还有问题(Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'),那就修改注册表,找到相关路径计算机\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
修改 CurrentVersion 改为 1.6
使⽤ java -version 显⽰正常
⽅法⼆:还是修改环境变量(没想到吧)
where java 中看到,⾸先⽣效的是 System32中的 java,然后是 1.6 中的java,那把 1.6 的java提前,即可⽣效。
移动 java_home ⾄ system32 之前
使⽤java -version和where java。
添加和删除注册表方法
添加和删除注册表方法
宝子!今天咱来唠唠注册表的添加和删除这档子事儿哈。
先说添加注册表吧。
这就像是给电脑的一个超级秘密小本本里写上新的规则。
不过呢,这事儿可得小心着点,弄不好可能会让电脑闹小脾气哦。
一般来说呢,你要是想添加注册表项,得先找到注册表编辑器。
在Windows系统里,你可以按“Win+R”组合键,然后输入“regedit”,回车就打开这个神秘的编辑器啦。
进去之后呢,就像在一个超级复杂的迷宫里找路。
比如说你要添加一个软件相关的注册表项,你得先找到对应的文件夹位置。
这就好比你要把新的家规放在家族谱里合适的地方一样。
不过这个过程可不能乱点乱改哈,要是改错了地方,电脑可能就会一脸懵圈,不知道该怎么按照新规则办事啦。
找到合适的地方后,你可以右键点击,然后选择新建相关的项或者值,再按照软件或者你自己的需求设置好内容。
再说说删除注册表。
这就像是把小本本里一些不需要的规则擦掉。
不过这更得小心啦,因为有些注册表项是系统运行或者软件正常工作必需的,要是不小心删错了,软件可能就罢工,电脑也可能会出各种奇怪的问题。
要删除注册表项的时候,你还是先在注册表编辑器里找到你想删除的那个项或者值,然后右键点击,选择删除就好啦。
但是在删之前,你最好先确定这个东西真的是不需要的。
就像你清理家里的东西,不能把有用的也当成垃圾扔了呀。
JAVA启动的时间与系统当前时间不符
在好的机器中注册表中项HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWSNT\CURRENTVERSION\TIME ZONES导出该项注册文件,在有问题的机器上写入注册信息,就能解决.一般情况下不会出现如题所示的问题,既然出现了我们就要想办法解决之。
以我的机器为例,我的当前系统时间是北京时间2011-08-31T08:00:00,但是newDate()得到的却是:2011-08-31T00:00:00。
表示java得到的时间比当前系统时间提前了8个小时,那么我们就要想办法把java得到的时间向后推迟8个小时。
解决的办法是:1、找到你用的jre文件夹,以本机为例:C:\Program Files\Java\jdk1.5.0\jre2、在上述文件夹下有个zi文件夹,我们的工作都在这里。
3、zi文件夹下有一个Etc文件夹,我们要做的工作就是从这个文件夹下找到对应的GMT文件替换zi下GMT文件。
4、选择哪个文件呢?如果java获取的时间+N=当前系统时间,就选择GMT-N 文件,重命名为GMT,覆盖掉zi下的GMT文件,如果java获取的时间-N=当前系统时间,就选择GMT+N文件,重命名为GMT,覆盖掉zi下的GMT 文件。
5、再运行一下你的程序看时间是不是正确了,如果还是不正确,请确认你的jre目录是否选得正确。
通过修改Tomcat根目录下的bin文件夹中的catalina.bat文件,增加以下配置解决问题:set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=GMT+08即将时区设置为北京时区set JA V A_OPTS=%JA V A_OPTS% -Duser.timezone=GMT+08。
Java环境变量设置
自己总结些再加抄点:安装JDK后要配置环境变量,主要有三个:1 JAVA_HOME ->为JDK的安装目录,如:F:\JAVA\jdk1.6.0_042 CLASSPATH ->到哪里找需要执行的.class文件,如: .;%JAVA_HOME%\lib;前面是一个点[.]再加一个分号[;]再以分号结束[;]为什么要加点[.]在编译java文件时,如javac xxx.java 即会在当前目录下生成xxx.class文件,然后再用java xxx执行,系统会在当前目录下找xxx.class文件,所以要加点,代表是在当前目录下找class文件来执行。
3 path ->javac.exe的执行程序路径,如:%JAVA_HOME%\bin;开始菜单->运行->cmd,在控制台里输入regedit,回车后看到注册表出来了!其过程是当输入regedit时候,系统会去系统环境变量里找这个程序的可执行文件路径。
打开系统环境变量的设置地方,会看到系统变量windir的值为%SystemRoot%(其实也就是c:\WINDOWS若系统装在c盘的话),我们再打开c:\WINDOWS,可以找到一个叫regedit.exe的程序!设置系统变量的目的:为了使系统可以找到程序的运行路径!在设置环境变量path时候,之所以要选择C:\Java\jdk1.6.0\bin(JDK的安装目录)的原因呢?打开该目录,发现里面全是一些可执行文件,其中有我们最熟悉的javac.exe,java.exe等等。
是啊,之所以要选择bin是因为当我们在编译程序的时候,在控制台输入javac Hello.java是,系统要去系统环境变量下面找javac.exe的执行程序路径。
首先得介绍下面几个参数的作用:current directory(当前目录):当前在用的目录就是当前目录。
比如说当你打开NOTEPAD,并处于运行状态时候,当前目录就是c:/windows;如果你用cmd命令打开命令行窗口,当前目录就是c:\windows\system32; 如果你在用java这条指令,当前目录就是JAVA下的BIN 目录所在的路径,因为java.exe在bin里面。
