来自的问题 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
答案 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>