我很难重命名我的注册表中的一个密钥。我不知道,但所有的时间都改变了名称,所以我试图使用程序自动执行。代码如下:
using Microsoft.Win32;
using Microsoft.Win32.SafeHandles;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication7
{
class Program
{
private static readonly IntPtr HKEY_LOCAL_MACHINE = new IntPtr(-2147483646);
[DllImport("advapi32")]
public static extern int RegRenameKey(SafeRegistryHandle hKey, [MarshalAs(UnmanagedType.LPWStr)] string oldname,
[MarshalAs(UnmanagedType.LPWStr)] string newname);
[DllImport("Advapi32.dll", EntryPoint = "RegOpenKeyExW", CharSet = CharSet.Unicode)]
public static extern int RegOpenKeyEx(IntPtr hKey, [In] string lpSubKey, int ulOptions, int samDesired, out IntPtr phkResult);
static void Main(string[] args)
{ //mhmmm si, todo esta bien , bueno ire a ver lo que iba oka ver
///Estas intentando renombrar una clave de registro una la crpeta que la contiene...
IntPtr result;
SafeRegistryHandle hKey = null;//no es necesario, esta funcuonando, si no, no me hubiere retorando un int
hKey = new SafeRegistryHandle(HKEY_LOCAL_MACHINE,true);
int resul = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Company", 0,0,out result);
Console.WriteLine(resul);
int rosul = RegRenameKey(hKey, "SOFTWARE\\Company\\", "SOFTWARE\\Editado\\");
Console.WriteLine(rosul);
Console.ReadLine(); //Ok a ver dejamever unos ejemplos de advapi, los tienes ahi? mierdaaa no tiees ideas de los peos que se acaba de tirar mi perro
}
}
}
问题是当我打开钥匙时:
int resul = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Company", 0,0,out result);
出于某种原因,我没有打开钥匙。错误让我回复:
我的注册表规则未重命名:
我参考的文章:
http://blogs.microsoft.co.il/pavely/2015/09/29/regrenamekey-hidden-registry-api/
我希望有人帮助......它只适用于我的电脑。
答案 0 :(得分:0)
错误87是ERROR_BAD_PARAMETER
,表示您传递给该函数的一个或多个参数不正确。
错误161为ERROR_BAD_PATHNAME
,表示您已通过该功能的错误路径。
我认为这两个错误都是由于您在路径中使用前导或尾部斜杠造成的。因此,您需要\\SOFTWARE\\Company
而不是SOFTWARE\\Company
。尝试以下更改,看看它是否有效。
删除了主斜杠:
int resul = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Company", 0,0,out result);
删除了尾部斜杠:
int rosul = RegRenameKey(hKey, "SOFTWARE\\Company", "SOFTWARE\\Editado");
<强>参考强>