如何从我的安装程序为我的用户设置此注册表值

How can I set this registry value for my User from my installer

问题来自

我需要为启动安装的当前用户设置注册表值。由于安装进入系统模式 - 我对当前用户一无所知

还有我的代码 'System.UnauthorizedAccessException'

SecurityIdentifier sID = WindowsIdentity.GetCurrent().User;
var subKey = Registry.Users.OpenSubKey(sID + "\SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
subKey.SetValue("test", "test");
enter code here

以下是如何编写自动启动选项:

const string AutorunRegistryKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run";
Registry.SetValue(AutorunRegistryKey, <AppName>, <PathToApplication>);

如果您想将其从自动启动中删除:

const string AutorunRelativePath = @"Software\Microsoft\Windows\CurrentVersion\Run\";
var key = Registry.CurrentUser.OpenSubKey(AutorunRelativePath, true);
    if (key != null)
    {
        key.DeleteValue(<AppName>, false);
        key.Close();
    }

正如 Ripple 和我都评论的那样,不需要代码。转到安装项目中的注册表视图,右键单击 HKEY_CURRENT_USER 下的软件并添加密钥 Microsoft,然后添加 Windows、当前版本,然后添加每个密钥。

然后在运行键视图中,右键单击名称,右侧的视图窗格并添加新的字符串值,名称为您的姓名。我假设该值是您的 exe 的路径,并且(假设它在应用程序文件夹中)使值 [TARGETDIR]my.exe。

如果您的安装是 "Everyone" 安装,那么它无法运行是有充分理由的。这与代码无关。在 Everyone 安装中,自定义操作代码是 运行 系统帐户(不是安装用户),因此您正在尝试为系统帐户创建 运行 密钥。