听说我有一个十六进制值,我不知道原来的值是什么:
[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!");
}
它始终显示操作已成功完成。但我没有更改注册表值。