现在的位置: 首页 > 综合 > 正文

制作自动运行程序(由vb6推广引用)

2014年01月29日 ⁄ 综合 ⁄ 共 4339字 ⁄ 字号 评论关闭



这需要将要启动的应用程序路径写到注册表中具体的路径是:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
只需要在上面的路径下写一个键并为此键设置一个当前应用程序的路径即开机自载
具体的方法:
1、将下面这段代码就是将键Clock写到注册表中:
  '设置注册表内的RUN属性
  Dim strString As String
  Dim keyhand As Long
  Dim r As Long
  strString = App.Path & "/" & App.EXEName & ".exe"
  r = RegCreateKey(HKEY_LOCAL_MACHINE, "software/microsoft/windows/currentversion/run", keyhand)
  r = RegSetValueEx(keyhand, "Clock", 0, REG_SZ, ByVal strString, Len(strString))
  r = RegCloseKey(keyhand)
2、下面这段代码就是将注册表的Clock键删除
  '删除注册表内的RUN属性
  Dim keyhand As Long
  r = RegOpenKey(HKEY_LOCAL_MACHINE, "software/microsoft/windows/currentversion/run", keyhand)
  r = RegDeleteValue(keyhand, "Clock")
  r = RegCloseKey(keyhand)

——————————————————————————————————————————————
(以上是VB内容)

我写的方法:只是给部分代码,咔咔~~

  首先引用 using Microsoft.Win32; 这个是.NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:Registry和RegistryKey。这两个类都是密封类不允许被继承。

例如新建一个myAutoRunProgarm的winForm工程。

private void WriteReg()
{
 RegistryKey RegKey = Registry.LocalMachine;
  RegKey.OpenSubKey(@"/SOFTWARE/Microsoft/Windows/CurrentVersion/Run",true);
  RegKey.OpenSubKey(@"/SOFTWARE/Microsoft/Windows/CurrentVersion/Run",true);
  string Path="%systemroot%/system32/myAutoRunProgarm.exe";
  RegKey.SetValue("myAutoRunProgarm",Path);
  RegKey.Close();
}

对注册表的处理过程是通过调用.Net FrameWork SDK中的名称空间Microsoft.Win32中封装的二个类来实现的。这二个类就是Registry类、RegistryKey类。在RegistryKey类中定义了三个方法来删除注册表中的注册信息。他们分别是:DeleteSubKey ( )方法、DeleteSubKeyTree ( )方法、DeleteValue ( )方法。

private void WriteReg()
{
 RegistryKey RegKey = Registry.LocalMachine;
  RegKey.OpenSubKey(@"/SOFTWARE/Microsoft/Windows/CurrentVersion/Run",true);
  RegKey.OpenSubKey(@"/SOFTWARE/Microsoft/Windows/CurrentVersion/Run",true);
  string Path="%systemroot%/system32/myAutoRunProgarm.exe";
  RegKey.SetValue("myAutoRunProgarm",Path);
  RegKey.Close();
}

对注册表的处理过程是通过调用.Net FrameWork SDK中的名称空间Microsoft.Win32中封装的二个类来实现的。这二个类就是Registry类、RegistryKey类。在RegistryKey类中定义了三个方法来删除注册表中的注册信息。他们分别是:DeleteSubKey ( )方法、DeleteSubKeyTree ( )方法、DeleteValue ( )方法。

一.如何用Visual C#中调用这三个方法:
在介绍如何使用这三个方法之前,还需要重新介绍一下RegistryKey类中的一个方法--OpenSubKey ( )方法。在上一文中已经介绍了,此方法是打开指定的子键。其实OpenSubKey( )方法有二种调用的方式:

I > .OpenSubKey ( string , subkey ) :这种调用方式是对于此子键只是进行读操作。
II > .OpenSubKey ( string subkey , Boolean writable ):当对子键使用写操作的时候要用此种调用方法。如果在对子键使用了写操作,但仍然使用第一种调用方法,在程序运行的时候会产生一个错误信息。

(1). DeleteSubKey ( )方法:
此方法是删除一个指定的子键,在使用此方法的时候,如果在此子键中还存在另外的子键,则会产生一个错误信息。在程序中调用此方法有二种原型,为:
I > . DeleteSubKey ( string , subkey ):这种调用方式就是直接删除指定的子键。

II > . DeleteSubKey ( string subkey , Boolean info ):其中的"string"是要删除的子键的名称,"Boolean"参数的意思是:如果值为"True",则在程序调用的时候,删除的子键不存在,则产生一个错误信息;如果值为"False",则在程序调用的时候,删除的子键不存在,也不产生错误信息,程序依然正确运行。所以在具体的程序设计过程中,我还是推荐使用第二种调用方法。

(2). DeleteSubKeyTree ( )方法:
此方法是彻底删除指定的子键目录,即:删除该子键以及该子键以下的全部子键。由于此方法的破坏性是非常强的,所有在使用的时候要非常主要。在程序中调用此方法的原型就一种,为:

DeleteSubKeyTree ( string subkey ):其中"subkey"就是要彻底删除的子键名称。

(3). DeleteValue ( )方法:
此方法是删除指定的键值。在程序中调用此方法的原型就一种,为:
DeleteValue ( string value ):其中"value"就是要删除的键值的名称。
在介绍完与删除注册表中注册信息有关方法后,将通过一个程序来说明他们在程序中具体用法。


刚刚找到的。。。。。晕12-11 2:05。自己绕了个弯路。

SeedBack:http://lovecherry.cnblogs.com/archive/2005/03/25/125527.html

在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host

利用vs.net我们可以在几分钟之内建立其windows服务,非常简单

下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer) 
5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
6. 然后为这个服务填加功能
7.双击这个Timer,然后在里面写一些数据库操作的代码,比如
 SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
   SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
   conn.Open();
   comm.ExecuteNonQuery();
   conn.Close();

8. 将这个服务程序切换到设计视图
9. 右击设计视图选择“添加安装程序”
10. 切换到刚被添加的ProjectInstaller的设计视图
11. 设置serviceInstaller1组件的属性: 
    1) ServiceName = My Sample Service
    2) StartType = Automatic (开机自动运行)
12. 设置serviceProcessInstaller1组件的属性  Account = LocalSystem
13. 改变路径到你项目所在的bin/Debug文件夹位置(如果你以Release模式编译则在bin/Release文件夹)
14. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹/Microsoft.NET/Framework/v1.1.4322下面)
15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
17. 右击你的服务选择启动就可以启动你的服务了
看看数据库是不是一秒多了5个记录啊

需要注意的是:
如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的,如果路径发生了变化,需要先卸载这个服务InstallUtil.exe /u参数,然后再重新安装这个服务,不能直接安装。还有就是windows服务是没有界面的,不要企图用控制的输出方式来输出一些信息,你只能添加一个EventLog,通过WriteEntry()来写日志。

关于怎么用windows服务来做一个远程服务可以看一下http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp

抱歉!评论已关闭.