0

听说我有一个十六进制值,我不知道原来的值是什么:

[HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile]
"Username"="test"
"Password"=hex:50,d6,e6,e9,ee,f0,cf,f2,6e,64,03,ad

我想将这些值添加到注册表中,我尝试使用命令提示符和管理员权限以及以下用户名命令:

REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile /v Username /d test /f

它就像一个魅力。然后我将以下行添加到 VS2010 的 app.manifest 文件中:

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

为了获得管理权限,我使用了我在这个网站上找到的以下命令:

private string GETCMD(string com)
    {
        string tempGETCMD = null;
        Process CMDprocess = new Process();
        System.Diagnostics.ProcessStartInfo StartInfo = new System.Diagnostics.ProcessStartInfo();
        StartInfo.FileName = "cmd"; //starts cmd window
        StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        StartInfo.CreateNoWindow = true;
        StartInfo.RedirectStandardInput = true;
        StartInfo.RedirectStandardOutput = true;
        StartInfo.UseShellExecute = false; //required to redirect
        CMDprocess.StartInfo = StartInfo;
        CMDprocess.Start();
        System.IO.StreamReader SR = CMDprocess.StandardOutput;
        System.IO.StreamWriter SW = CMDprocess.StandardInput;
        SW.WriteLine(com);
        //insert your other commands here
        SW.WriteLine("exit"); //exits command prompt window
        tempGETCMD = SR.ReadToEnd(); //returns results of the command window
        SW.Close();
        SR.Close();
        return tempGETCMD;
    } 

它返回“操作成功完成”但注册表中没有任何更改

我尝试使用 c# 函数直接将值设置为注册表,但它不起作用。

这里有什么问题?我如何将这些值设置为注册表?为什么当我手动键入命令而不是编程时它在命令提示符下工作,即使程序以管理员身份启动也是如此?

编辑:

我试过这个命令:

REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile /v Username /d test /f

甚至这个

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile" /v Username /d test /f

而且我不知道密码女巫使用什么是十六进制的。

编辑:

我尝试使用 .reg 文件听到的是内容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile]
"Username"="test"
"Password"=hex:50,d6,e6,e9,ee,f0,cf,f2,6e,64,03,ad

我使用以下代码来执行它,但即使具有管理员权限它也不起作用:

if (!String.IsNullOrEmpty(res))
                {
                    string path = Path.GetTempPath() + "ajdm4SjhCHGS44AhhdJ892.reg";
                    File.WriteAllText(path, res);

                    ProcessStartInfo start = new ProcessStartInfo();
                    start.FileName = "regedit.exe";
                  //  start.Arguments = " -s " + path;
                   start.Arguments = " " + path;
                    Process proc = Process.Start(start);

                    MessageBox.Show("Done!");

                } 

它始终显示操作已成功完成。但我没有更改注册表值。

4

0 回答 0