Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/32: Рейтинг темы: голосов - 32, средняя оценка - 4.50
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16

Существует ли файл в папке Windows\System32 на 64-разрядной ОС (или обход механизма File System Redirector)

12.08.2012, 05:55. Показов 7054. Ответов 11

Студворк — интернет-сервис помощи студентам
Проведем эксперимент, если Вы владелец 64-разрядной версии ОС Windows:

1. Откройте стандартный поиск, или проводник (если ver. OS > XP).
Пишем в строке поиска MSG.exe
Результат: найден в папке windows\system32
2. Запускаем любой 32-битный файловый менеджер (например, Total Commander)
Можем просто пролистать файлы в папке System32,
а можем указать во встроенном поиске (ALT+F7) MSG.exe
Результат: найдено 0 файлов. Вот так сюрприз.

Кроме того, попытавшись сделать тоже самое
средствами любимого Visual Basic,

Это моя коллекция 7 способов проверок наличия файла, так что сильно не пугайтесь объемом кода
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" _
    (ByVal pszPath As String) As Long
Private Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" _
    (ByVal lpFileName As String) As Long
 
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const INVALID_HANDLE_VALUE = &HFFFFFFFF
 
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
    (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
 
Const MAX_PATH As Long = 260
 
Private Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type
 
Private Type WIN32_FIND_DATA
   dwFileAttributes As Long
   ftCreationTime As FILETIME
   ftLastAccessTime As FILETIME
   ftLastWriteTime As FILETIME
   nFileSizeHigh As Long
   nFileSizeLow As Long
   dwReserved0 As Long
   dwReserved1 As Long
   cFileName As String * MAX_PATH
   cAlternate As String * 14
End Type
 
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _
    (ByVal lpFileName As String, _
    ByVal dwDesiredAccess As Long, _
    ByVal dwShareMode As Long, _
    lpSecurityAttributes As SECURITY_ATTRIBUTES, _
    ByVal dwCreationDisposition As Long, _
    ByVal dwFlagsAndAttributes As Long, _
    ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
Const FILE_SHARE_READ = &H1
Const FILE_SHARE_WRITE = &H2
Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000
Const FILE_FLAG_NO_BUFFERING = &H20000000
Const OPEN_EXISTING = 3
 
Private Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Long
End Type
 
Option Explicit
 
Private Sub Command1_Click()
Dim exe As String, oFSO As Object, ret As Long
 
exe = Environ("windir") & "\system32\msg.exe" 'C:\Windows\System32\MSG.exe
 
'Встроенная функция Dir
If Dir$(exe, vbReadOnly Or vbSystem Or vbHidden) <> vbNullString Then MsgBox "With Dir$ - msg.exe Exists!"
 
'Объект WSH FilesystemObject
Set oFSO = CreateObject("Scripting.FilesystemObject")
If oFSO.FileExists(exe) Then MsgBox "With FSO - msg.exe Exists!"
Set oFSO = Nothing
 
'Встроенная функция проверки атрибутов
On Error Resume Next
ret = GetAttr(exe)
If Err.Number = 0 Then MsgBox "With Attributes Check - msg.exe Exists!"
On Error GoTo 0
 
'API-функция PathFileExists
If PathFileExists(exe) = 1 Then MsgBox "With API PathFileExists - msg.exe Exists!"
 
'API-функция GetFileAttributes
ret = GetFileAttributes(exe)
If ret <> INVALID_HANDLE_VALUE And (0 = (ret And FILE_ATTRIBUTE_DIRECTORY)) Then
    MsgBox "With API GetFileAttributes - msg.exe Exists!"
End If
 
'API-функция FindFirstFile
Dim WFD As WIN32_FIND_DATA, hFile As Long
hFile = FindFirstFile(exe, WFD)
Call FindClose(hFile)
If hFile <> INVALID_HANDLE_VALUE Then MsgBox "With API FindFirstFile - msg.exe Exists!"
 
'API-функция CreateFile
Dim Security As SECURITY_ATTRIBUTES
hFile = CreateFile(exe, 0, FILE_SHARE_READ Or FILE_SHARE_WRITE, Security, OPEN_EXISTING, _
    FILE_FLAG_NO_BUFFERING Or FILE_FLAG_SEQUENTIAL_SCAN, 0)
If hFile <> INVALID_HANDLE_VALUE Then
    CloseHandle (hFile)
    MsgBox "With API CreateFile - msg.exe Exists!"
End If
 
End Sub

мы получим также нулевой результат.

На эту удочку я недавно попался при отладке Batch-сценария.
Виновником оказался так называемый механизм перенаправления файловых запросов в 64-разрядной версии ОС Windows (File System Redirector), о котором рассказывает Microsoft.

То есть на самом деле запросы 32-битных приложений при попытке обратится к системной директории System32
файловая система автоматически переадресовывает в папку SysWOW64.
Почему так сделано, можно почитать здесь.

Но как же нам обойти систему виртуализации.
Вот реализация на VB принципа, указанного в статье MS:

Способ 1. Временное отключение механизма перенаправления файловых запросов.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Declare Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" _
    (ByVal IsEnable As Boolean) As Boolean
 
Option Explicit
 
Sub System32file_Exists()
Dim ret_redir As Boolean
Dim exists As Boolean
Dim exe As String
 
exe = Environ("windir") & "\system32\msg.exe"
 
ret_redir = Wow64EnableWow64FsRedirection(False)
If Dir$(exe, vbReadOnly Or vbSystem Or vbHidden) <> vbNullString Then exists = True
ret_redir = Wow64EnableWow64FsRedirection(True)
 
If exists Then MsgBox exe & " is Exists!"
End Sub
Способ 2. Обращаемся к папке System32 через алиас "Sysnative".

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
 
Sub System32file_Exists()
Dim exe As String
 
exe = Environ("windir") & "\system32\msg.exe"
exe = Replace(exe, "system32", "Sysnative", , vbTextCompare)
 
If Dir$(exe, vbReadOnly Or vbSystem Or vbHidden) <> vbNullString Then
    MsgBox exe & " is Exists!"
End If
End Sub
Недостатки способа № 1:
1. Относительная небезопасность: реактивацию перенаправления ФС нужно сделать как можно быстрее,
чтобы не прервать работу c 64-битными библиотеками в этом потоке.
2. Еще есть информация о предупреждении UAC при попытке снять режим File System Redirection.
Запуск примера на ОС Win 7 x64 Ultimate с максимальным уровнем UAC показал, что защита молчит во время этой манипуляции.
3. Также данная API-функция будет работать только на 64-разрядной версии ОС,
поэтому разрядность тоже
нужно проверять.

Проверка разрядности ОС. Вот пару вариантов от меня:

1. Проверяем наличие системной папки с использованием переадресации через тот самый алиас "Sysnative".
Visual Basic
1
2
3
4
Public Function Is64system() As Boolean
On Error Resume Next
Is64system = GetAttr(Environ("windir") & "\Sysnative") And vbDirectory
End Function
2. Через WSH читаем переменные среды окружения.
Visual Basic
1
2
3
4
5
6
7
8
9
10
Public Function Is64system() As Boolean
On Error Resume Next 'PROCESSOR_ARCHITEW6432 on x32 is NOT DEFINED
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
If WshShell.Environment("PROCESS")("PROCESSOR_ARCHITECTURE") = "AMD64" Or _
   WshShell.Environment("PROCESS")("PROCESSOR_ARCHITEW6432") = "AMD64" Then
    Is64system = True
End If
Set WshShell = Nothing
End Function


Стоит добавить, что подобная ситуация также касается ветки реестра HKLM\Software\Wow6432Node
Для обхода этого также существует специальный алиас.

Не по теме:

Хотелось бы знать, можно ли заставить систему думать, что запрос к файловой системе исходит от 64-битного приложения?


Комментарии?
Вложения
Тип файла: zip FSRedirector_bypass_VB.zip (2.6 Кб, 48 просмотров)
Тип файла: xls File_system_Redirector_bypass.XLS.xls (44.5 Кб, 39 просмотров)
3
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2012, 05:55
Ответы с готовыми решениями:

Повреждён или отсутствует файл Windows\System32\config\system
У меня вот какая проблема.у меня на диске 2 windowsaXP и один из них не запускается,пишет что повреждён или отсутствует файл...

Повреждён или отсутствует файл windows\system32\config\system
Здравствуйте!Вот такая проблема Нетбук ACER ASPIRE One D260 при запуске система критует...Повреждён или отсутствует файл...

Ошибка: Повреждён или отсутствует файл windows\system32\config\system но винда не переустанавливается!
Коллеги, такая проблема: XP не грузится из-за ошибки &quot;Повреждён или отсутствует файл windows\system32\config\system&quot;. Есессно, первым...

11
12.08.2012, 11:29

Не по теме:

Цитата Сообщение от Dragokas Посмотреть сообщение
Хотелось бы знать, можно ли заставить систему думать, что запрос к файловой системе исходит от 64-битного приложения?
Проще всего скомпилировать код в x64 приложение и работать с ним из x86.

0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.08.2012, 12:28
Цитата Сообщение от locm Посмотреть сообщение
Проще всего скомпилировать код в x64
Проще всего в VB6 скомпилировать в х64 приложение?
Хотелось бы увидеть.
Цитата Сообщение от locm Посмотреть сообщение
работать с ним из x86.
Приложение х64 запустить на x86 системе?
Не смешите людей такими советами.
0
12.08.2012, 12:55

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Проще всего в VB6 скомпилировать в х64 приложение?
Вы что считаете что кроме VB нет других ЯП?
Для тех кто в танке.
Нужно написать x64 приложение на любом ЯП имеющем компилятор, создающий x64 приложения и вызывать эту прогу из проги на VB.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Приложение х64 запустить на x86 системе?
Да вы батенька - тролль!
Читайте тему с начала, а не с конца! Разве не видите что речь идет про 64 разрядную систему?

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.08.2012, 15:14  [ТС]
Pro_grammer, да, конечно не запуститься в х32-системе даже, если вызывать из другого х32-приложения.

Но, программист все же должен учитывать все мелочи.
Таким образом либо писать 2 версии программы - под х32 и отдельно под х64.
Либо учитывать описанные в топике моменты.

locm, я так понимаю, Ваша идея - иметь отдельную x64-DLL библиотеку (только с тем функционалом, который различается при вызове в разных по разнядности системах), и подключать ее только в том случае, когда наша программа определит, что система - х64.
А позднее связывание (нечто вроде:
Visual Basic
1
Set oFileExists = CreateObject("ExistsX64.dll")
должно решить проблему с компиляцией и одновременной совместимостью с х32 системой, где такой модуль использовать не требуется.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,557
Записей в блоге: 7
12.08.2012, 15:23
Цитата Сообщение от Dragokas Посмотреть сообщение
Ваша идея - иметь отдельную x64-DLL библиотеку
Нет, именно x64 exe программу. x64-DLL из 32-битной проги просто так не вызвать.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.08.2012, 19:38  [ТС]
Это будет сильно бить по производительности вызывать из VB внешнюю х64-exe программу.
Но, как вариант, смысл понятен.
0
0 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 6
19.01.2013, 19:58
Цитата Сообщение от Dragokas Посмотреть сообщение
Проведем эксперимент, если Вы владелец 64-разрядной версии ОС Windows:

1. Откройте стандартный поиск, или проводник (если ver. OS > XP).
Пишем в строке поиска MSG.exe
Результат: найден в папке windows\system32
2. Запускаем любой 32-битный файловый менеджер (например, Total Commander)
Можем просто пролистать файлы в папке System32,
а можем указать во встроенном поиске (ALT+F7) MSG.exe
Результат: найдено 0 файлов. Вот так сюрприз.
Найден в папке - c:\Windows\winsxs\amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_ 6.1.7600.16385_none_851e6308c5b62529\msg .exe
Миниатюры
Существует ли файл в папке Windows\System32 на 64-разрядной ОС (или обход механизма File System Redirector)  
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.01.2013, 20:06  [ТС]
Kotya, Эксперимент касается только папки system32, которая указана в переменной среды окружения, а значит поиск и запуск MSG происходит именно из нее.
Почитайте внимательно тему: MSG не является внутренней или внешней командой - именно из пакетного файла

Не по теме:

Папка winsxs вообще отвечает за хранение предыдущих версий библиотек и исполняемых файлов с целью обеспечения совместимости приложений.

1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.08.2013, 23:57  [ТС]
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Пример записи значения в 64-битную или 32-битную ветку реестра на выбор

Реализуется с помощью аргумента samDesired функции RegOpenKeyEx.

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long

Registry Key Security and Access Rights: http://msdn.microsoft.com/en-u... s.85).aspx

Кусочек из рабочей программы. Лишнее не удалял. Может пригодится кому.

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
        (ByVal hKey As Long, ByVal lpSubKey As String, _
         ByVal ulOptions As Long, _
         ByVal samDesired As Long, _
         phkResult As Long) As Long
         
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
 
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" _
        (ByVal hKey As Long, _
         ByVal dwIndex As Long, _
         ByVal lpName As String, _
         lpcbName As Long, _
         ByVal lpReserved As Long, _
         ByVal lpClass As String, _
         lpcbClass As Long, _
         lpftLastWriteTime As FILETIME) As Long
         
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
        (ByVal hKey As Long, _
         ByVal lpValueName As String, _
         ByVal lpReserved As Long, _
         lpType As Long, _
         lpData As Any, _
         lpcbData As Long) As Long
 
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" _
        (ByVal hKey As Long, _
        ByVal lpValueName As String, _
        ByVal Reserved As Long, _
        ByVal dwType As Long, _
        ByVal szData As String, _
        ByVal cbData As Long) As Long
 
Public Enum RegTypes
      RegNonee = 0
      RegSZ = 1
      RegExpandSz = 2
      RegBinary = 3
      RegDword = 4
      RegDwordLittleEndian = 4
      RegDwordBigEndian = 5
      RegLink = 6
      RegMultiSz = 7
      RegResourceList = 8
      RegFulResourceDesc = 9
End Enum
 
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_USERS = &H80000003
Private Const HKEY_PERFORMANCE_DATA = &H80000004
Private Const HKEY_CURRENT_CONFIG = &H80000005
Private Const HKEY_DYN_DATA = &H80000006
 
Private Const KEY_ALL_ACCESS = &HF003F
Private Const KEY_WRITE = &H20006
Private Const KEY_READ = &H20019
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_CREATE_SUB_KEY = &H4
 
'Registry Redirector Subsystem
'http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx
Private Const KEY_WOW64_64KEY = &H100 'Access a 64-bit key from either a 32-bit or 64-bit application.
Private Const KEY_WOW64_32KEY = &H200 'Access a 32-bit key from either a 32-bit or 64-bit application.
'Can be used by:
' - RegCreateKeyEx
' - RegDeleteKeyEx
' - RegOpenKeyEx
 
Private Sub Command1_Click()
 
        'Записываем новый ...
        
        Dim badRoot$, Ret_1&, Ret_2&
        
        badRoot = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\" & badCLSID & "\TypeLib"
        
        'Записываем ключ в 32-битных ветвях
        
        Ret_1 = WriteKey(badRoot, "", Key2099, False)
        
        'Записываем ключ в 64-битных ветвях
        
        Ret_2 = WriteKey(badRoot, "", Key2099, True)
        
        MsgBox "32-битная ветка - " & IIf(Ret_1, "Успех.", "Ошибка.") & vbCrLf & _
               "64-битная ветка - " & IIf(Ret_2, "Успех.", "Ошибка.")
end sub
 
 
'Самоэлевация прав программы
 
Private Sub Form_Initialize()
    'Exit Sub 'Временно, пока не скомпилирую проект
    With CreateObject("WScript.Shell")
        On Error Resume Next
        .RegWrite "HKLM\isElevated", "", "REG_SZ"
        If Err <> 0 Then
            CreateObject("Shell.Application").ShellExecute App.Path & "\" & App.EXEName & ".exe", "1", "", "runas", 1
            End
          Else
            .RegDelete "HKLM\isElevated"
        End If
    End With
End Sub
 
 
 
Private Function GetMainKeyHandle(MainKeyName As String) As Long 'Получить хендл главного улья
    On Error Resume Next
    Select Case MainKeyName
           Case "HKEY_CLASSES_ROOT"
                GetMainKeyHandle = HKEY_CLASSES_ROOT
           Case "HKEY_CURRENT_USER"
                GetMainKeyHandle = HKEY_CURRENT_USER
           Case "HKEY_LOCAL_MACHINE"
                GetMainKeyHandle = HKEY_LOCAL_MACHINE
           Case "HKEY_USERS"
                GetMainKeyHandle = HKEY_USERS
           Case "HKEY_PERFORMANCE_DATA"
                GetMainKeyHandle = HKEY_PERFORMANCE_DATA
           Case "HKEY_CURRENT_CONFIG"
                GetMainKeyHandle = HKEY_CURRENT_CONFIG
           Case "HKEY_DYN_DATA"
                GetMainKeyHandle = HKEY_DYN_DATA
    End Select
End Function
 
 
Private Function WriteKey(rPath$, ParamName, ParamValue, Optional is64Node As Boolean = False)
 
        'Функция записывает значение в реестр.
        'Возвращает результат выполнения API-функции RegSetValueEx
        'Умеет использовать Registry Redirector SybSystem (в 64 или 32-битную ветку записывать данные)
 
        Dim Ret_1&, Ret_2&, sSubKey$, Hive$, hSubKey&, regAccess&
        
        Hive = Split(rPath, "\")(0)
        sSubKey = IIf(Len(Hive) = Len(rPath), "", Replace(rPath, Hive & "\", ""))
        
        If is64Node Then
            regAccess = KEY_QUERY_VALUE Or KEY_WRITE Or KEY_WOW64_64KEY
        Else
            regAccess = KEY_QUERY_VALUE Or KEY_WRITE Or KEY_WOW64_32KEY
        End If
        
        Ret_1 = RegOpenKeyEx(GetMainKeyHandle(Hive), sSubKey, 0&, regAccess, hSubKey)
 
        Ret_2 = RegSetValueEx(hSubKey, ParamName, 0, RegTypes.RegSZ, ParamValue, Len(ParamValue) + 1)
        
        RegCloseKey hSubKey
    
        WriteKey = Ret_2
 
End Function
0
Заблокирован
26.08.2013, 10:05
Visual Basic 6 не компилирует под X64 ! ! ! !
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.08.2013, 16:26  [ТС]
inv.DS, для этого и придумали возможность временно отключать механизм переадресации файловых запросов.
А для реестровых ключей, как это наглядно показано, задействуется параметр:

regAccess = KEY_QUERY_VALUE Or KEY_WRITE Or KEY_WOW64_32KEY

Цитата Сообщение от MSDN
Indicates that an application on 64-bit Windows should operate on the 32-bit registry view. This flag is ignored by 32-bit Windows.
Указывает, чтобы приложения (вне зависимости от их разрядности) на 64-битной ОС обращались к 32-битным веткам реестра.

regAccess = KEY_QUERY_VALUE Or KEY_WRITE Or KEY_WOW64_64KEY

Цитата Сообщение от MSDN
Indicates that an application on 64-bit Windows should operate on the 64-bit registry view. This flag is ignored by 32-bit Windows.
Указывает, чтобы приложения (вне зависимости от их разрядности) на 64-битной ОС обращались к 64-битным веткам реестра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2013, 16:26
Помогаю со студенческими работами здесь

Не удается загрузить Windows из-за испорченого или отсуствующего файла \WINDOWS\SYSTEM32\CONFIG\SYSTEM
Здрасте всем У меня тут поломка Я хотела переустановить винду, но после фармотирования диска у меня комп выключается или выдает такую...

Отсутствует файл /windows/system32/config/system
не удается запустить windows xp из за испорченного или отсутствеющево фаила /windows/system32/config/system что делат помогитееее

Приложение Microsoft Access не может найти файл 'C:\Windows\system32\system.mdb' этот файл требуется для запуска
При установке Офис 97 на Windows XP не работает Access - выдается сообщение: &quot;Приложение Microsoft Access не может найти файл...

File.Exists - как определить существует файл или нет?
1. Попробовал, как в форуме в прошлых темах было написано, потом по книге.... Все равно не получается. Напишите, плиз, еще раз, как...

Не найден или неисправен файл <Windows root>\system32\hal.dll
Создал новый раздел на жестком через gparted. После этого винда перестала грузиться. При запуске выдает такой текст: &quot;Не удаетса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru