C# winform利用注册表信息实现开机自动运行软件

winform .exe程序打包修改注册表使其可通过网页触发启动并传入参数 本篇主要实现的是在BS网页中使用a标签的href链接启动本地安装的CS应用程序(winform C#.exe程序),并能从网页传入参数到应用程序中。实现方式是利用自定义URL Protocol来调用应用程序,在winform程序安装完成后修改注册表,用注册表来启动应用程序。 阅读详情
 #region C# winform利用注册表信息实现开机自动运行软件

        static public string ReigstidFileName = "myRegedit";
        static public string RegeditPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\";

        private void 开机自动运行程序ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // RegistryKey 类  命名空间:  Microsoft.Win32
           
            //获得文件的当前路径
            string dir=Directory.GetCurrentDirectory();
            //获取可执行文件的全部路径
            string exeDir = dir + "\\WinForm_ExampleTeaching.exe";

             //判断注册表数据信息是否存在
            if (!IsRegeditExist("myForm"))
            {
                if (WTRegedit("myForm", exeDir))
                {
                    MessageBox.Show("添加成功!");
                }
                else
                {
                    MessageBox.Show("添加失败!");
                }
            }
            else
            {
                MessageBox.Show("自动运行已存在注册表中!");
            }
        }

        

        //读注册表数据信息
        public string GetRegistData(string name) //键名称
        {
            string registData;
            RegistryKey hkml = Registry.LocalMachine;
            RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
            RegistryKey aimdir = software.OpenSubKey(ReigstidFileName, true);
            registData = aimdir.GetValue(name).ToString();
            return registData;
        }

        //写注册表数据信息,分别是子键名称和值存放LocalMachine目录下的XXX文件中,其文件名为name的值,值为tovalue的值
        public bool WTRegedit(string name, string tovalue)
        {
            bool WriteOk = false;
            try
            {
                RegistryKey hklm = Registry.LocalMachine;
                RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
                RegistryKey microsoft = software.OpenSubKey("Microsoft", true);
                RegistryKey Windows = microsoft.OpenSubKey("Windows", true);
                RegistryKey CurrentVersion = Windows.OpenSubKey("CurrentVersion", true);
                //RegistryKey Run = CurrentVersion.OpenSubKey("Run", true);
                RegistryKey aimdir = CurrentVersion.OpenSubKey("Run", true);

                aimdir.SetValue(name, tovalue);
                //Run.SetValue(name, tovalue);
                WriteOk = true;
            }
            catch
            {
                WriteOk = false;
            }
            return WriteOk;
        }

        //修改注册表数据信息
        public bool EditRegedit(string name, string tovalue)
        {
            bool EditOk = false;
            try
            {
                if (IsRegeditExist(name))
                {
                    RegistryKey hklm = Registry.LocalMachine;
                    RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
                    RegistryKey aimdir = software.CreateSubKey(ReigstidFileName);
                    aimdir.SetValue(name, tovalue);
                    EditOk = true;
                }
            }
            catch
            {
                EditOk = false;
            }
        return EditOk;
        }

        //删除注册表数据信息
        public bool DeleteRegist(string name)
        {
            bool DeleteOk = false;
            string[] aimnames;
            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
            RegistryKey microsoft = software.OpenSubKey("Microsoft", true);
            RegistryKey Windows = microsoft.OpenSubKey("Windows", true);
            RegistryKey CurrentVersion = Windows.OpenSubKey("CurrentVersion", true);
            //RegistryKey Run = CurrentVersion.OpenSubKey("Run", true);
            RegistryKey aimdir = CurrentVersion.OpenSubKey("Run", true);

            aimnames = aimdir.GetValueNames();
            foreach (string aimKey in aimnames)
            {
                if (aimKey == name)
                {
                    //aimdir.Deletue(name);
                    aimdir.DeleteSubKey(name);
                    DeleteOk = true;
                }
            }
            return DeleteOk;
        }
        //判断注册表数据信息是否存在
        public bool IsRegeditExist(string name)
        {
            bool isExist = false;
            string[] subkeyNames;

            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
            RegistryKey microsoft = software.OpenSubKey("Microsoft", true);
            RegistryKey Windows = microsoft.OpenSubKey("Windows", true);
            RegistryKey CurrentVersion = Windows.OpenSubKey("CurrentVersion", true);
            //RegistryKey Run = CurrentVersion.OpenSubKey("Run", true);
            RegistryKey aimdir = CurrentVersion.OpenSubKey("Run", true);

            subkeyNames = aimdir.GetValueNames();
            foreach (string keyName in subkeyNames)
            {
                if (keyName == name)
                {
                    isExist = true;
                }
            }
            return isExist;
        }
        #endregion

 

 

 

C# WinFORM通过注册表实现开机运行 这是 gougou123给的资料,自己整理了一下,还没测试过············ 有空再测试吧····· //向注册表添加开机起动 private void button1_Click(object sender, System.EventArgs e) //button1按下后,会执行的方法 { RegistryKey hk 阅读详情

相关推荐

C#客户端(WinForm)开机自动启动实现

1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下 2. 写入注册表的两种方式 a.在生成安装程序时配置 b.在程序运行时,动态配置。 方法一:在生成安装程序时配置 右击安装编辑程序,在“视图”菜单中,选择“注册表”。通过右键菜单新建"键",创建出如图所示的路径。 右键Run,新建“字符串值”。为右侧的key命名(在注册表中不能重名),并在属性中...

仰望星空的代码 3万+

winform程序开机自启动设置方法总结

1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下 2. 写入注册表的方式有两种 a.在生成安装程序时配置 b.在程序运行时,动态配置。 方法一:在生成安装程序时配置 右击安装编辑程序,在“视图”菜单中,选择“注册表”。通过右键菜单新建"键",创建出如图所示的路径。 右键Run,新建“字符串值”。为右侧的key命名(在注册表中不能重名)

liyc123youxiang的专栏 1万+

Winform(C#) 配合注册表 自定义协议 在Web端激活

现在很多程序需在BS激活CS程序,像qq等软件。 需要配合注册表一起使用,其中配置注册表 容易配置错误导致运行不起来。 注册表配置: 1.在注册表HKEY_CLASSES_ROOT下添加自定义项 jlxxxx a.将jlxxxx的(默认)相的值改成jlxxxx,另外添加变量URL Protocol 值为空 都可以(重要); 2.在jlxxxx下添加项shell 3.在shell下添加项open; 4.在...

五菱包工头 1289

C#实现应用程序自启动的几种方法(winform为例)

在工业领域,部分项目要求开发者增加软件开机自启动功能。这里大概有两种方法来实现这一功能,这里我们以winform桌面应用程序为例,采用第一种方法:修改注册表的形式来实现这一功能1.修改计算机注册表的方式2.将软件的快捷方式创建到计算机的自动启动目录下提示:以下是本篇文章正文内容,下面案例可供参考// 获取带有可执行文件名字的的路径elserk.Close();// 将checkbox的勾选结果持久化到json文件中经过楼主测试,上述代码已经在楼猪电脑上测试成功 ,o(

weixin_46086778的博客 5217

C#实现定时检测软件运行状态

一、需求 windows程序,定时监测某软件是否启动状态,并通过redis发送监测数据。 二、开发前梳理 通过vs2019进行代码编写,使用隐藏的winform实现,定时任务通过.net自带的System.Timers工具,redis工具使用ServiceStack.Redis,任务主要通过System.Diagnostics 工具获取程序进程,并定时获取其状态,最后使用wix打包工具,将程序打包程MSI,以供客户机安装。安装后自启,并且程序需要可以实现开机自启,通过添加RegistryKey注册表

snail_go_ahead的博客 3548

C#利用注册表与JSON配置实现WinForm应用开机自启动的完整指南

本文提供了一份C# WinForm应用实现开机自启动的完整指南。核心方案是通过操作Windows注册表实现自启动控制,并利用JSON配置文件持久化用户设置,确保配置、UI与系统状态一致。文章详细讲解了注册表操作原理、JSON配置读写、UI事件绑定以及处理路径变更、权限等常见问题的进阶技巧。

s4t5u6v的博客 894

C# WinForm程序开机自启动与启动方式识别教程

在Visual Studio中创建C# WinForm应用程序非常简单。首先打开Visual Studio,然后选择“创建新项目”,接着从项目模板中选择“Windows Forms App (.NET Framework)”作为项目类型。为你的项目命名,并指定项目的保存位置,最后点击“创建”。此时,Visual Studio将创建一个包含默认窗体的WinForm项目,你可以在此基础上进行开发。自启动程序是指在Windows操作系统启动时,无需用户交互即可自动运行的程序。

weixin_33506815的博客 1611

C#实现开机自动启动Winform

string strName = Application.ExecutablePath; string strnewName = strName.Substring(strName.LastIndexOf("\\") + 1); if (!cbAutoMenu.Checked) { //修改注册

1156

通过C# Winform实现与QQ的交互及消息发送

本文还有配套的精品资源,点击获取 简介:本文将探讨如何使用C# Winform应用程序与本地已登录QQ程序交互,发送消息给指定好友。首先,介绍Winform和C#基础知识,然后讲解调用外部程序和开机启动功能的实现。实现过程中,我们需要通过查询注册表或环境变量获取QQ程序路径,使用 Process.Start() 方法启动QQ,并利用 SendKeys ...

weixin_33582089的博客 1418

C# WinForm注册表实现开机启动和托盘显示

C# WinForm注册表实现开机启动和托盘显示,用vs2008做的,测试可用,欢迎下载。

WinForm应用开机自启动避坑指南:从注册表到JSON配置的完整流程

本文为C# WinForm开发者提供了一份详尽的开机自启动实现指南。文章深入剖析了注册表操作的核心机制与权限问题,并提出了结合JSON配置文件进行状态管理的完整解决方案。通过封装可复用的管理类,帮助开发者绕过常见陷阱,构建稳定可靠的自启动功能。

linux6sysadmin的博客 1046

C# winform利用注册表实现开机自动运行程序

C# winform利用注册表实现开机自动运行程序

C#程序实现软件开机自动启动的两种常用方法

C#程序实现软件开机自动启动的两种常用方法 C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法函数的示例与实例带详细注释 方法一:将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限) 1.必要引用 复制代码 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using IWshRuntimeLibr

nihaoapengyou的专栏 2907

设置和取消开机自动启动

用vs2008开发,通过修改注册表设置和取消开机自动启动程序,如果是在win7下,则以管理员身份运行vs2008即可。

WinForm通过操作注册表实现限制软件使用次数的方法

主要介绍了WinForm通过操作注册表实现限制软件使用次数的方法,结合实例形式分析了WinForm操作注册表的原理、步骤与相关实现技巧,需要的朋友可以参考下

C#实现winform软件开机自动启动并最小化到系统托盘

<br />一、开机自动启动:<br /><br />拖一个CheckBox<br /><br />1、软件启动时给CheckBox重置状态:<br />C#代码<br />  RegistryKey r_local = Registry.LocalMachine;<br />            RegistryKey r_run = r_local.CreateSubKey((@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run"));<br />      

csxjy1986的专栏 2989

探索niri:让你的Linux桌面布局无拘无束

niri是一款基于Wayland的滚动平铺合成器,采用创新的窗口管理方式。它将窗口排列为向右无限延伸的条目,支持独立显示器布局和动态垂直工作区,确保多任务操作流畅性。核心功能包括概要视图、截图界面、屏幕投射、手势操作、窗口分组等,并支持自定义布局和动画效果。niri具备良好的稳定性,兼容xwayland-satellite工具,灵感来自PaperWM但突破了GNOME限制。该项目为追求高效桌面管理的用户提供了全新解决方案,欢迎加入社区交流体验。

weixin_44626085的博客 1816

C# Winform打包部署时添加注册表信息实现开机自启动

1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下 2. 写入注册表的方式有两种 a.在生成安装程序时配置 b.在程序运行时,动态配置 方法一:使用VS2010自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件。具体实现如下: 1、添加安装部署项目后,鼠标右键安装项目->视图->注册表,HK...

weixin_33847182的博客 521

华为OD机试真题 新系统 9月20号 【字符串分组求和】

华为OD新系统机试真题【字符串分组求和】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串分组求和】解析。

qq_45776114的博客 623

YOLOv8 改进涨点 | 模块即插即用 直接可用

在目标检测任务中,注意力机制能够帮助模型聚焦于图像中的关键区域,显著提升检测精度。。创建模块代码注册模块修改任务解析tasks.py创建YAML配置文件模块核心优势适用场景计算开销SOCA捕获二阶统计信息,增强通道间相关性需要精细特征区分的场景中等SK自适应多尺度核选择多尺度目标检测中等偏高显式特征聚集-分配机制全局上下文建模中等A2-Net双线性注意力,高效全局交互复杂场景理解中等偏高CrissCross线性复杂度全局上下文高分辨率输入,长距离依赖较低。

u012133341的博客 2258
上一篇: vs2008 安装mvc2.0 后 加载不成功的原因及解决方法
下一篇: 关于iis无权查看网页的问题
wuling129
博客等级 码龄23年 486粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值