0

我必须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 作为帐户运行以允许更改注册表。

4

1 回答 1

0

只需在您的 Winlogon 路径周围添加双引号,它应该可以工作。

processAdmin.Arguments = "/C reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\" -v Shell -t REG_SZ -d explorer.exe /f";
于 2013-09-18T22:48:59.883 回答