我正在使用Visual Studio安装程序项目创建安装程序文件。在安装过程中,用户将为所有用户或当前用户选择目标目录并进行安装。用户选择之后,我将使用这些信息在本地计算机(所有用户)或当前用户处添加注册表项,具体取决于用户的选择。它适用于本地计算机,但不适用于当前用户。我编写了自定义操作代码,该方法将在commit方法中调用。
以下是添加注册表项的代码:
public void CreateReg(string cmd, bool allUsers)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c " + cmd;
if (allUsers) // If create key for all users.
startInfo.Verb = "runas";
process.StartInfo = startInfo;
process.Start();
}
如果是当前用户,则allusers = false。我已经记录了字符串cmd,如果我在命令提示符下输入cmd,则会创建一个当前的用户注册表项。如果我创建了一个仅添加注册表项的单独项目,它也将起作用。只是在自定义操作中不起作用。我错过了什么?谢谢!