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

时间:2016-06-16 18:50:42

标签: c# setup-project visual-studio-setup-proje

来自的问题 https://stackoverflow.com/a/37859812/4878558

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

我的代码也提供'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

2 个答案:

答案 0 :(得分:1)

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

然后在“运行”键视图中,右键单击右侧的“名称”,“视图”窗格,并添加新的字符串值,名称为您的名称。我假设,这个值是你的exe的路径,并且(假设它在Application文件夹中)创建值[TARGETDIR] my.exe。

如果您的安装是“Everyone”安装,那么它就无法正常运行。这与代码无关。在Everyone安装中,自定义操作代码与系统帐户(而不是安装用户)一起运行,因此您尝试为系统帐户创建运行密钥。

答案 1 :(得分:0)

以下是编写autostartup选项的方法:

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

如果要从autostartup中删除它:

List<T>