在我的 .msi 安装程序包中,我有一个C#自定义操作,用于将注册表值写入:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
自定义操作是延迟的,因为我需要提升我尝试安装的某些键的权限。但是,因为它是延迟的,所以此操作会写入系统帐户的当前用户,因为它是使用提升的权限启动的,因此我的注册表值实际上会写入:
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run
如何让安装程序将此注册表值写入启动安装包而不是系统帐户注册表的用户的注册表中?
答案 0 :(得分:1)
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();
你试试这个,这里是microsoft
的参考修改强>
string strSID = "";
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
NTAccount ntuser = new NTAccount(userName);
SecurityIdentifier sID = (SecurityIdentifier)ntuser.Translate(typeof(SecurityIdentifier));
strSID = sID.ToString();
Registry.Users.SetValue(sID + @"\key", value);
试试这个,您应该阅读Registry.Users.SetValue
你需要:
using System.Security.Principal;
代码。