我必须Process.Start
在 C# 中使用 a 才能以另一个有权更改相关注册表值的用户身份运行 cmd.exe。但是,不完全确定如何正确地工作/处理它。
ProcessStartInfo processAdmin;
processAdmin = new ProcessStartInfo();
processAdmin.UseShellExecute = false;
processAdmin.Password = secureString;
processAdmin.UserName = "admin";
processAdmin.FileName = "cmd.exe";
processAdmin.Arguments = "/C reg add HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon -v Shell -t REG_SZ -d explorer.exe /f";
processAdmin.WorkingDirectory = "C:\\Windows\\System32";
Process.Start(processAdmin);
我猜主要问题是 中的空格ProcessAdmin.Arguements
,特别是在注册表路径中,即\\Windows NT\\
在标准 cmd.exe 中,我会将其包装在"...."
但不完全确定如何将其包装在 C 中,或者是否有更好的方法这样做。请注意,应用程序将在标准用户下运行,但我需要更改注册表项才能admin
使用 secureString 作为帐户运行以允许更改注册表。