应用程序如何在寄存器运行时安装和注册,以便与非管理员用户一起自动运行

本文关键字:管理员 用户 一起 运行 寄存器 运行时 注册 安装 应用程序 | 更新日期: 2023-09-27 18:24:19

我有一个应用程序,它通过以下方式注册自己以运行windows注册表:

RegistryKey rk1 = Registry.LocalMachine.OpenSubKey(
       "SOFTWARE''Microsoft''Windows''CurrentVersion''Run", true);
var value1 = rk1.GetValue(KeyName);
if(value1 == null)
    rk1.SetValue(KeyName, KeyValue);

RegistryKey rk2 = Registry.LocalMachine.OpenSubKey(
       "Software''Wow6432Node''Microsoft''Windows''CurrentVersion''Run", true);
var value2 = rk2.GetValue(KeyName);
if(value2 == null)
    rk2.SetValue(KeyName, KeyValue);

我使用管理员用户安装该应用程序,并且我希望在所有用户的每次登录中自动运行它,但通过此实现,该应用程序不会在有限的用户登录中运行,所以你的建议是什么?

编辑:

对于管理员用户,一切都很顺利,但对于有限的用户,应用程序从未启动。

应用程序如何在寄存器运行时安装和注册,以便与非管理员用户一起自动运行

您应该做的第一件事是向文件中写入一些消息(称为日志记录),以了解应用程序不工作的原因
如果你在一开始就写日志"应用程序启动",你可以了解它是否运行(所以请查看稍后的消息,了解它在哪里停止)
不要使用(在注释中)exe所在的目录进行日志记录,因为它对有限的用户不可写入
试试这个:

string fname = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicatio‌​nData),
    "your_app_name", "log.txt"); 
File.AppendAllText(fname, "Started");