Red de conocimiento informático - Aprendizaje de código fuente - Easy Language no puede escribir registro/escribir claves de registro

Easy Language no puede escribir registro/escribir claves de registro

Te llevará por el camino correcto. Es probable que existan los siguientes problemas.

Presionas win r y luego escribes regedit para ver el registro. Luego escriba una oración en lenguaje simple

Ejecutar ("regedit", false,)

Vea si las rutas de ejecución de los dos registros son las mismas. Ah, si no. Sabes por qué. Obtenga más información en el artículo siguiente

Asegúrese de consultarlo. Apoyar la originalidad.

Redirección de archivos y registro WOW64 en el sistema Win64-bit

Hoy, un miembro de nuestro sitio me hizo una pregunta y me publicó un breve fragmento de código como el siguiente: CString strPath = LC:\Windows\\\\System32\123.sys; archivo CFile; if (file.Open(strPath, CFile::modeCreate)==TRUE){ file.Close();} es muy simple, solo en C: \ Cree un 12 en la ruta Windows\System32

Hoy, un miembro de nuestro sitio me hizo una pregunta y me publicó un pequeño fragmento de código de la siguiente manera: CString strPath = L "C:\Windows\ System32 \\123.sys";CFile file;if (file.Open(strPath, CFile::modeCreate)==TRUE){ file.Close();} Es muy simple, cree un archivo en la ruta:\Windows\System32 El archivo 123.sys parece muy simple. Compílelo y ejecútelo. Vaya al directorio C:\Windows\System32 para buscar el archivo 123.sys. Se ha ido. Qué extraño, busqué en toda la unidad C y finalmente lo encontré, pero estaba en el directorio C:\Windows\SysWOW64. Especifiqué el directorio System32, pero ¿por qué está en el directorio SysWOW64? Esto es extraño. De repente recordé que hace algún tiempo otro miembro me preguntó sobre el registro. Parecía haber una palabra clave para WOW64, así que busqué en Internet y finalmente encontré la respuesta. Reimpresas aquí, las explicaciones relevantes son las siguientes: ========================================= ==== ====== Ya sea la versión Windows XP Professional X64, la versión Windows Server 2003 X64, la versión Windows Vista X64, la versión Windows 7 X64 (en lo sucesivo, denominados colectivamente el sistema X64), se ha introducido una tecnología : redirección de archivos y registros Esta tecnología se utiliza para separar programas de 32 bits de programas de 64 bits. Este emulador para ejecutar programas de 32 bits en una plataforma de 64 bits se llama WOW64, abreviatura de "Windows 32 en Windows 64", y proporciona otra capa en la capa del sistema para admitir programas más antiguos de 32 bits. Dentro del sistema X64, algunos directorios especiales y claves de registro especiales se dividen en dos partes independientes. En el sistema de archivos, el directorio systemroot/system32 está reservado para archivos de 64 bits, mientras que los archivos de 32 bits se redirigen al directorio systemroot/SysWOW64. En otras palabras, todos los programas de 32 bits normalmente sólo aparecerán en el directorio raíz del sistema/SysWOW64. Cualquier intento de un programa de 32 bits de acceder al directorio systemroot/system32 será redirigido al directorio systemroot/SysWOW64.

Este es el comportamiento predeterminado a menos que el subproceso del programa necesite desactivar explícitamente este mecanismo de redirección. La situación es similar para el registro; el subsistema WOW64 también proporciona redirección de acceso al registro. En el caso de programas de 32 bits, ya sea leyendo o escribiendo en el registro, WOW64 interceptará el acceso a HKLM/Software y lo redireccionará a HKLM/Software/Wow6432Node (es decir, el registro de la información del programa de 32 bits). , las claves de registro se redirigirán. La redirección del registro esencialmente mantiene dos conjuntos diferentes de claves de registro, uno para 64 bits y otro para 32 bits. Los valores clave afectados incluyen no solo el HKLM/Software anterior, sino también HKEY_CLASSES_ROOT HKEY_CURRENT_USER/Software/Classes HKEY_LOCAL_MACHINE/Software HKEY_USERS/*/Software /Classes HKEY_USERS/*_Classes La información de registro para programas de 64 bits se almacena en el archivo. valores clave anteriores y para programas de 32 bits La información de registro de redirección para Cuando se ejecutan programas de 32 bits, WOW64 interceptará el acceso del programa al registro HKLM/Software y lo redirigirá a HKLM/Software/Wow6432Node====== ====================== ===================== ¿Qué tal, entiendes? el principio? Luego le enseñaré cómo desactivar explícitamente este mecanismo de redirección: Solución para la redirección de archivos: podemos llamar a la API correspondiente para activar y desactivar esta redirección. Hay tres funciones de uso común: Wow64DisableWow64FsRedirection (desactivar la redirección del sistema), Wow64RevertWow64FsRedirection (activar la redirección del sistema), Wow64EnableWow64FsRedirection (activar la redirección del sistema). Sin embargo, Wow64EnableWow64FsRedirection no es confiable cuando se usa de manera anidada, por lo que el Wow64RevertWow64FsRedirection mencionado anteriormente generalmente se usa para habilitar la redirección del sistema de archivos.

Solución de redirección de registro: cómo los programas de 32 bits acceden al registro de 64 bits (HKLM/Software). Al llamar a la función RegCreateKeyEx para crear una clave de registro, agregue el parámetro KEY_WOW64_64KEY en el sexto parámetro REGSAM samDesired, para que el registro de 64 bits. se puede lograr acceso a la tabla al llamar a la función RegOpenKeyEx para crear una clave de registro, agregue el parámetro KEY_WOW64_64KEY en el sexto parámetro REGSAM samConfiguración deseada, de modo que se pueda lograr el acceso al registro de 64 bits al llamar a la función RegOpenKeyEx para abrir la clave de registro; , agregue el parámetro KEY_WOW64_64KEY en la configuración del sexto parámetro REGSAM samDesired Agregue el parámetro KEY_WOW64_64KEY a la configuración del parámetro REGSAM samDesired, para que se pueda acceder al registro de 64 bits (HKLM/Software); /Wow6432NodeWow6432Node) en un programa de 64 bits Al llamar a la función RegCreateKeyEx para crear una clave de registro, agregue el parámetro KEY_WOW32_64KEY a la configuración de su sexto parámetro REGSAM samDeseado para lograr acceso al registro de 32 bits al llamar a la función RegOpenKeyEx; abra la clave de registro, agregue el parámetro KEY_WOW32_64KEY a la configuración de su cuarto parámetro REGSAM samDesired. Para agregar el parámetro KEY_WOW32_64KEY, puede acceder al registro de 32 bits. OK, la solución también se ha explicado, implementémosla y veamos cómo; El código recién ahora está modificado. De hecho, solo necesita agregar el fragmento de código arriba y abajo, agregue las llamadas de API para la redirección cerrada y abierta respectivamente. El código es el siguiente: PVOID OldValue = NULL bRet = Wow64DisableWow64FsRedirection(. amp; OldValue); CString strPath = L "C:\Windows\System32\123. sys"; archivo CFile; bRet = Wow64RevertWow64FsRedirection(y OldValue);.