Что нового

[Файловая система] Отключение редиректра для х86-приложения в х64-битной системе

Alkantel

Новичок
Сообщения
45
Репутация
1
Добрый вечер. Необходимо скомпилированным х86-битным скриптом скопировать файлик в папку "Program Files" в х64-битной системе. По форуму нашел скрипт, который отключает редирект, но что-то он у меня не пашет. Прошу помощи у знающих.
Вот сам скипт
Код:
#Include <WinAPIEx.au3>

Global Const $WOW64 = _WinAPI_IsWow64Process()

; Отключаем перенаправление
If $WOW64 Then
    _WinAPI_Wow64EnableWow64FsRedirection(0)
EndIf

; Что-то делаем с System32

; Включаем перенаправление
If $WOW64 Then
    _WinAPI_Wow64EnableWow64FsRedirection(1)
EndIf
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
RegRead('HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion', 'ProgramFilesDir')


Редирект предназначен для получения доступа к C:\Windows\System32 из 32-битных программ.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
@ProgramFilesDir из под x64 процесса (система x64 естественно) = C:\Program Files
@ProgramFilesDir из под x86 процесса (система x64) = C:\Program Files (x86)
 
Автор
Alkantel

Alkantel

Новичок
Сообщения
45
Репутация
1
CreatoR сказал(а):
@ProgramFilesDir из под x64 процесса (система x64 естественно) = C:\Program Files
@ProgramFilesDir из под x86 процесса (система x64) = C:\Program Files (x86)
Нет! Приложение х32, система х64, файл скопировать нужно в "Program Files", не в "Program Files (x86)", которая будет по-умолчанию для 32-битного процесса


Добавлено:
Сообщение автоматически объединено:

Yashied сказал(а):
Редирект предназначен для получения доступа к C:\Windows\System32 из 32-битных программ.
И получить доступ к "Program Files" 32-битного приложения в 64-битной системе никак?
Будем изгаляться, значит :stars:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Alkantel сказал(а):
И получить доступ к "Program Files" 32-битного приложения в 64-битной системе никак?

Что значит никак? Я же написал пример получения нужной директории. Система не делает редирект на Program Files.

Код:
If _WinAPI_IsWow64Process() Then
	$ProgramFilesDir = RegRead('HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion', 'ProgramFilesDir')
Else
	$ProgramFilesDir = @ProgramFilesDir
EndIf
FileCopy(..., $ProgramFilesDir)
 
Автор
Alkantel

Alkantel

Новичок
Сообщения
45
Репутация
1
Yashied сказал(а):
Alkantel сказал(а):
И получить доступ к "Program Files" 32-битного приложения в 64-битной системе никак?

Что значит никак? Я же написал пример получения нужной директории. Система не делает редирект на Program Files.

Код:
If _WinAPI_IsWow64Process() Then
	$ProgramFilesDir = RegRead('HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion', 'ProgramFilesDir')
Else
	$ProgramFilesDir = @ProgramFilesDir
EndIf
FileCopy(..., $ProgramFilesDir)

Что-то я не росмотрел, или не понял Вашего сообщения. Спасибо, вы приблизили чуть блище меня к пониманию системы.
 
Верх