私のレジストリの1つのキーの名前を変更するのが難しいです。私は知りませんが、私はいつもプログラムを使って自動的に行うように名前を変えています。コードは以下です:私はよく鍵を開けていないよいくつかの理由についてRegOpenKeyExがエラーを返します。161
int resul = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Company", 0,0,out result);
:
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
}
}
}
私はキーを開くときに問題があります。エラーの私を返す:
マイregeditとルールの名前が変更されていない:私は参照のようにかかった
記事:
http://blogs.microsoft.co.il/pavely/2015/09/29/regrenamekey-hidden-registry-api/
を、私は誰かが役に立てば幸い...それは私のコンピュータのためだ。
64ビットOSを使用している場合、スクリーンショットに32ビットではなく64ビットレジストリハイブが表示されていることに注意してください。 .NETは通常アプリケーションのビット数に基づいてアクセスをリダイレクトしますが、この場合はWin32 APIにアクセスしているので、 'KEY_WOW64_32KEY'または' KEY_WOW64_64KEY'フラグを渡す必要があります。 – linuxuser27