|
Доступ к реестру x64 из приложения x86
|
|||
---|---|---|---|
#18+
Доброго времени суток. .NET 3.5 SP1 Мною ранее была написана некоторая библиотека AcadInfo.dll, скомпилированная как AnyCPU. В ней, помимо прочего, определён метод, считывающий из реестра необходимую информацию обо всех установленных на локальной\удалённой машине версиях программы AutoCAD (нередко их может быть установлено сразу несколько). Поскольку разрядность установленного AutoCAD всегда совпадает с разрядностью операционной системы, то вся необходимая информация размещена в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD. В ветке HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Autodesk подраздел AutoCAD отсутствует (можно убедиться через regedit). Если пишется некое приложение, использующее AcadInfo.dll и оно так же компилируется как AnyCPU, то информация об установленных AutoCAD успешно считывается. Недавно обнаружил, что если это приложение компилировать как x86 и запустить его в операционной системе x64, то в коде библиотеки AcadInfo.dll (по прежнему скомпилированной как AnyCPU) значение свойства IntPtr.Size будет равным 4, а не 8 и получить ветки реестра, относящиеся к установленным AutoCAD не удаётся: Код: c# 1. 2. 3.
Я попробовал воспользоваться методами расширений, приведённых в Example 3 . Наименования этих методов некорректны и сбивают с толку, т. к. на самом деле они возвращают не ветку реестра, а строковое значение параметра, имя которого обозначено в качестве аргумента: Код: c# 1. 2.
т.е. по смыслу правильнее было бы как-то так: Код: c# 1. 2.
Однако код по указанной выше ссылке, использующий DllImport, в данном случае не работает так, как ожидалось: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Как в обозначенной ситуации получить доступ к интересующим меня веткам реестра? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 14:37 |
|
Доступ к реестру x64 из приложения x86
|
|||
---|---|---|---|
#18+
Пока что удалось получить значение строкового параметра: Код: c# 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.
Работает так: Код: c# 1. 2.
Однако это только капля из того, что требуется... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 17:03 |
|
Доступ к реестру x64 из приложения x86
|
|||
---|---|---|---|
#18+
Ответ: Код: c# 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. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2014, 11:33 |
|
|
start [/forum/topic.php?fid=20&fpage=127&tid=1403213]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 155ms |
0 / 0 |