C# 设置程序开机自动运行/设置&获取程序的安装路径

来源:互联网 发布:本地yum配置 编辑:程序博客网 时间:2024/05/29 05:07

1. C#如何设置开机自动运行

a. 包含命名空间  using Microsoft.Win32;

b. 取得程序的安装路径

        private void checkBoxAutoRun_CheckedChanged(object sender, EventArgs e)
        {
            string filename = InstallDir + "//DesktopAssistant.exe";
            pagestatus.SetAutoRun(filename,checkBoxAutoRun.Checked);
        }

c. 设置注册表的run 项新增值

        public void SetAutoRun(string fileName,bool isAutoRun)
        {
            RegistryKey reg = null;
            try
            {
                String name = fileName.Substring(fileName.LastIndexOf("//") + 1);
                reg = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);
                if (reg == null)
                    reg = Registry.LocalMachine.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
                if (isAutoRun)
                    reg.SetValue(name, fileName);                   
                else
                    reg.SetValue(name, false);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
                finally
            {
                if(reg!=null)
                reg.Close();
            }       
        }

下图为注册表中添加了DesktopAssistant的开机启动项:

 

2. C#如何设置/获取程序的安装路径

由于安装路径可以由用户更改,因此上述b中的InstallDir需要根据实际安装路径设置。

a. 设置安装路径可以在新建安装项目时在一个注册表目录下新建一个“环境字符串值”,并将value设为[TARGETDIR],这样可以将[TARGETDIR]保存在注册表中:

下图在HKET_LOCAL_MACHINE/Software/[Manufacturer]下设置一个name为InstallPath的“环境字符串值”,value设为[TARGETDIR]。

[Manufacturer]为新建安装项目的Manufacturer属性设置值。

下图为新添加的注册表项,安装路径自动赋给了InstallPath项:

 

b.获取注册表中的安装目录,程序段:

                RegistryKey reg = null;
                String name = "InstallPath";
                reg = Registry.LocalMachine.OpenSubKey("SOFTWARE//ADADesktopAssistant", true);
                if (reg != null)
                {
                    if (reg.GetValue(name) == null)
                    {
                        return false;
                    }
                    else
                    {
                        InstallDir = (string)reg.GetValue(name);
                        return true;
                    }
                }
                return false;

 

原创粉丝点击