C#设置开机启动程序

尝试参考一篇文章来给自己的app添加开机启动的时候,发现参考的代码会遇到注册表权限的问题,程序调用调用开机启动的时候会提示:“对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”的访问被拒绝。 ”搜索了一下,主要的原因是访问 HKEY_LOCAL_MACHINE 这一注册表分支需要管理员权限。不想一个简单的app去申请注册表权限,试了一下可以使用HKEY_CURRENT_USER 这一分支来达到同样的开机启动的效果。

修改后的代码如下:

private void 开机启动ToolStripMenuItem_Click(object sender, EventArgs e)
{
            if (开机启动ToolStripMenuItem.Checked)
            {
                开机启动ToolStripMenuItem.Checked = false;
                // MessageBox.Show("没有选中");
                //获取程序执行路径..
                string starupPath = Application.ExecutablePath;
                //class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装.
                RegistryKey loca = Registry.CurrentUser;
                RegistryKey run = loca.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");

                try
                {
                    //SetValue:存储值的名称
                    run.DeleteValue("proxydisable");
                    MessageBox.Show("已停止开机运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    loca.Close();
                }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                开机启动ToolStripMenuItem.Checked = true;
                //获取程序执行路径..
                string starupPath = Application.ExecutablePath;
                //class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装.
                RegistryKey loca = Registry.CurrentUser;
                RegistryKey run = loca.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");

                try
                {
                    //SetValue:存储值的名称
                    run.SetValue("proxydisable", starupPath);
                    MessageBox.Show("已启用开机运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    loca.Close();
                }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

tinker board 学习笔记

今天用build 好的代码在tinker board上运行,发现GPIO的i2c上完全没反应,检查硬件接线也没问题,跟同事请教,才发现是权限的问题。因为我们的i2c用的是 /dev/i2c-1这个节点,所以需要配置一下对应的权限:

chmod 777 /dev/i2c-1

设置之后,再运行程序,i2c通讯就正常了。

已解决: executing external native build for ndkbuild android.mk

同事的code怎么都build不过,专门请教了高手,设置了之后仍然是build不过,搜了一下找到了 https://blog.csdn.net/shima6172307/article/details/80520033 这篇文章,检查了一下,原来project真的放在一个含有空字符的目录下面,重命名了project 目录的名字,就build成功了,开心!