| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как надежно определить, что в x64 системе выполняется 32х разрядный Acad.

Как надежно определить, что в x64 системе выполняется 32х разрядный Acad.

Ответ
Поиск в этой теме
Непрочитано 08.09.2010, 00:42 #1
Как надежно определить, что в x64 системе выполняется 32х разрядный Acad.
Pastor
 
это только кличка
 
Москва
Регистрация: 22.10.2006
Сообщений: 252

Мне в .net приложении требуется определить :
1. Идентификатор продукта (acad или вертикальное решение)
2. Разрядность собственно Acad'a.
3. Разрядность ОС, если в наличии .NET < 4.0

Первый пункт легко определить через реестр (зная ProductKey). Но тогда возникает другой вопрос: может ли получиться так, что не хватит прав пользователя для чтения из ветки HKLM? Спрашиваю, поскольку мой опыт в этом направлении = 0.

И ещё.
У кого установлены вертикальные продукты, сообщите пожалуйста, что возвращает системная переменная ACADVER ?
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 08.09.2010 в 14:18.
Просмотров: 6237
 
Непрочитано 08.09.2010, 00:44
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Для чтения из HKLM права есть, насколько я знаю, всегда. Только если доменная политика не слишком закошмарена...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.09.2010, 13:01
1 | #3
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Для чтения из HKLM права есть, насколько я знаю, всегда.
Если прав на чтение из HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD не будет, то и AutoCAD не запустится - не сможет прочитать свою информацию.

Цитата:
Сообщение от Pastor Посмотреть сообщение
2. Разрядность собственно Acad'a.
Из .NET-приложения загруженного в AutoCAD разрядность определяется просто (т.к. нельзя загрузить 32-разрядную сборку в 64-разрядный AutoCAD и наоборот):
Код:
[Выделить все]
string platform = IntPtr.Size == 4 ? "x86" : "x64";
А еще глянь здесь: http://stackoverflow.com/questions/3...tform-with-net
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 08.09.2010, 13:37
#4
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Спасибо, Александр.
Ответ исчерпывающий по всем трём пунктам.

Возник еще вопрос по определению версии Acad.
А именно, что реально возвращает Autodesk.AutoCAD.ApplicationServices.Application.Version - версию базового автокада или же, в случае вертикальных решений, версию собственно десктопа. Мне нужен надежный способ во всех случаях получать строки "17.1", "18.0" и т.п. Именно в этой связи я интересовался, что возвращает системная переменная ACADVER в различных вертикальных решениях.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 08.09.2010 в 14:17.
Pastor вне форума  
 
Непрочитано 08.09.2010, 15:48
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Вот еще ссылка для на функции Acad64Bit-version и Acad64Bit-platform для lisp'а. Может кое-что и на net можно реализовать?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.09.2010, 16:07
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Может кое-что и на net можно реализовать?
Если используется .Net 4.0, то разрядность операционной системы можно определить так:
Код:
[Выделить все]
Environment.Is64BitOperatingSystem
Если операционная система является x64, а AutoCAD установлен x86, то информация об этом записывается в ветку реестра "SOFTWARE\Wow6432Node\Autodesk\AutoCAD"*. А если AutoCAD будет x64, как и сама операционка, то соответственно записи будут производиться в обычную "SOFTWARE\Autodesk\AutoCAD"*.
Вот когда-то писал.

_____________________________________________
* - Речь о ветви HKEY_LOCAL_MACHINE
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 08.09.2010, 17:17
#7
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Спасибо всем. С разрядностью разобрался. Для моего конкретного приложения оказалось достаточно
Код:
[Выделить все]
string platform = IntPtr.Size == 4 ? "32" : "64";
Остался вопрос о значении ACADVER для вертикальных решений.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как надежно определить, что в x64 системе выполняется 32х разрядный Acad.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск