- UID
- 157792
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-7-15
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
AUTOCAD R14.X的注册表详解
- Overview.
The AutoCAD registry is composed of three main sections. The
HKEY_CLASS_ROOT
section contains all the information for the ActiveX automation, as
well as file
descriptor. This section does not need in any case and at any time
to be
modified by a third party application. This section is and must stay
instanciated by the AutoCAD installer. However, in Mechanical
Desktop and
AutoCAD r14.01, there is a bug in the installer which can cause
problem for the
Automation part. This bug (and solution will be described later in
that
document).
For the two other sections, we have to be careful on which system
and
configuration the user is working on. Windows 95/98 differ from
Windows NT in
term of permission per user, to allow access to the registry at a
given user.
But in short, the HKEY_LOCAL_MACHINE section contains all the
default
information AutoCAD needs to initialized itself for a new NT login
user, as well
it contains the ARX applications demand loading information.
On another hand, the HKEY_CURRENT_USER contains the default settings
and
profiles for a given NT login user. (note that Windows 95/98 has
only one common
login user).
- HKEY_CLASS_ROOT.
As said before, you should not manipulate or modify that section
yourself.
Except for fixing the AutoCAD r14.01 installer bug, in case it
occurs on your
computer. Most of the time that bug does not show, or is not showing
up on a
target computer, because the AutoCAD ActiveX server is not used. But
to fix the
problem, you just need to apply the following .REG file on the
computer, or to
integrate the needed changes in your installer.
>>>>>>>>>>>>>
REGEDIT
HKEY_CLASSES_ROOT\Interface\{372FA490-600C-11CF-93EB-0800099EB3B7} =
IAcadApplication
HKEY_CLASSES_ROOT\Interface\{372FA490-600C-11CF-93EB-0800099EB3B7}\TypeLib
=
{9B5492B0-EC9A-11CE-935A-0800099EB3B7}
HKEY_CLASSES_ROOT\Interface\{9B5492B1-EC9A-11CE-935A-0800099EB3B7} =
IAcadDocument
HKEY_CLASSES_ROOT\Interface\{9B5492B1-EC9A-11CE-935A-0800099EB3B7}\TypeLib
=
{9B5492B0-EC9A-11CE-935A-0800099EB3B7}
HKEY_CLASSES_ROOT\Interface\{24B8A4E0-432A-11D0-A893-0800091B9B14} =
IAcadPreferences
HKEY_CLASSES_ROOT\Interface\{24B8A4E0-432A-11D0-A893-0800091B9B14}\TypeLib
=
{9B5492B0-EC9A-11CE-935A-0800099EB3B7}
<<<<<<<<<<<<
- HKEY_LOCAL_MACHINE
The entry key in that section for AutoCAD is located at:
HKEY_LOCAL_MACHINE\Software\Autodesk\AutoCAD\R14.0\
Under that key, you will find a value named 'CurVer' which contains
the last
installed and default AutoCAD identifier in form of:
ACAD-nnnnnnn:nnnnnnnn
This identifier is used to identify a given AutoCAD on a platform
where there is
multiple AutoCAD installed. Having that identifier, you can easily
find out
which AutoCAD will be used by the system, in case you double-click
on a DWG
file, or if you launch AutoCAD via an ActiveX client executable.
However, it does not mean this will always be that AutoCAD which is
going to be
used every time. A user can launch AutoCAD from the 'Start Menu',
and then this
identifier is useless. For your information, an ObjectARX
application can
retrieve the used identifier with the 'acrxProductKey()' function.
Ok. Having that identifier, we can now go further in the AutoCAD
registry
structure. So under key:
HKEY_LOCAL_MACHINE\Software\Autodesk\AutoCAD\R14.0\<identifier>\
you will find some other values which are used by AutoCAD to create
the AutoCAD
HKEY_CURRENT_USER entries when a new login user start AutoCAD the
first time.
Note that the AutoCAD installer does not create anything in the
HKEY_CURRENT_USER section at installation time, and so needs the
followings
entries to be able to initialize itself at startup. We will see
later that it is
important for your application to do this as well.
So here is the list of value, their type and their usage:
ACAD - STRING - "Default AutoCAD search PATH"
AcadLocation - STRING - "ACAD.EXE path"
LangAbbrev - STRING - "Language of the installed AutoCAD (2 letters
code)"
Language - STRING - "Language of the installed AutoCAD"
LocaleId - STRING - "Microsoft Language identification code"
NetSupport - STRING - "ADLM support (ie: solution 19475)"
ProductId - STRING - "Product ID"
ProductName - STRING - "Product Name"
Release - STRING - "Release"
SerialNumber - STRING - "Serial Number"
VBAComponents - DWORD - Microsoft VBA components (reserved)
VBALanguage - DWORD - Microsoft Language identification code
VBAVersion - DWORD - Microsoft VBA version (reserved)
The only interesting value is ACAD, and at least this is the only
one used by
AutoCAD to create a new login user HKEY_CURRENT_USER section when
started the
first time.
The 'Applications' sub-section contains the ARX application demand
loading
information. This section should be the only section your
application (or
installer) should modify. Here is the structure, you should follow:
HKEY_LOCAL_MACHINE\Software\Autodesk\AutoCAD\R14.0\<identifier>\Applications\
key: MyApp\
value: LOADCTRLS - DWORD - Demand load type
value: REGPATH - STRING - "PATH in the registry to the application
registry
section"
Sample:
DcgApplication\
LOADCTRLS - 0x02
REGPATH - "\\HKEY_LOCAL_MACHINE\Software\DcgCompany\DcgApplication"
The LOADCTRLS may be a bit wise or'd combination of any of the
following:
kOnProxyDetection = 0x01, load the ARX application when objects of
custom
classes it
controls are loaded via drawing open, dxfin,
insert, etc.
kOnAutoCADStartup = 0x02, load the ARX application when AutoCAD
starts up
kOnCommandInvocation = 0x04, load the ARX application whenever an
unknown
command is executed
that it has a registry entry for
kOnLoadRequest = 0x08, allow loading of the ARX application via
the
AcRxDynamicLinker::loadApp() method
kLoadDisabled = 0x10 do not demand load the ARX application for
any
reason
The other sub-sections like 'AutodeskApps' and 'Reinstall' should
not be
modified by a third party. But the 'AutodeskApps' sub-section is
useful to help
you understanding the structure you need to implement for demand
loading of your
ARX application as it contains the demand load information for the
Autodesk ARX
application for demand load. Here is a short summary of what you
need:
key: Commands\
value: InternationalCmd - STRING - "LocalizedCmd"
... other commands ...
key: Groups\
value: GroupName - STRING - "GroupName"
key: Loader\
value: MODULE - STRING - "Full PATHNAME to the ARX file on the
hard-drive"
key: Name\
value: AppName - STRING - "Description string"
Sample:
HKEY_LOCAL_MACHINE\Software\DcgCompany\DcgApplication\Commands\
_MYCOMMAND - "MACOMMANDE"
_MY2NDCMD - "MA2NDCMD"
HKEY_LOCAL_MACHINE\Software\DcgCompany\DcgApplication\Groups\
DCGGROUP - "DCGGROUP"
HKEY_LOCAL_MACHINE\Software\DcgCompany\DcgApplication\Loader\
MODULE - "c:\Program Files\DcgCompany\DcgApplication\DcgApp.arx"
HKEY_LOCAL_MACHINE\Software\DcgCompany\DcgApplication\Name\
DcgApp - "This is my favorite Dcg Application"
In R14.x releases the group sub-section is not used, but it will be
in future.
The Commands sub-section is used only if the application is
registered for
demand loading on command invocation. And the Name sub-section is
used only if
the application is registered for demand loading in load request.
- HKEY_CURRENT_USER
The HKEY_LOCAL_MACHINE seen before, can be manipulated at
installation or
running time by a third party. But his is possible only if the login
user has
the right permissions to do this. Most of the time, if using the
correct
settings, anybody can read and write in that section. For the
HKEY_CURRENT_USER
section this is the same. However, that section is accessible only
by the login
user, and might not be accessible at installation time by the
computer
administrator or example.
This restriction applies only for NT users, as Windows 95/98 does
not have the
multiple user feature. But as AutoCAD runs on all above platform,
your
applications should work fine on all of them as well.
So to work on all platform, and to be sure your application will
work fine for a
new NT login user, your installer should create entries in the
HKEY_LOCAL_MACHINE only. And you application should be able to
initialize itself
at startup time using these entries to create and/or modify the
AutoCAD entries
and profiles (ie solutions 1583, and 1564).
A complete description of the HKEY_CURRENT_USER section is useless
as that
section contains many information about editor settings and
configurations.
The two main interests is that 'Profiles' are defined in that
section. The
default profile used by AutoCAD is coded in the default value of:
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R14.0\<identifier>\Profiles
and that you should not modify these information directly in the
registry while
AutoCAD is running because then they will not be synchron with the
ones AutoCAD
has loaded when started. Instead, when AutoCAD is running you can
use the
ActiveX 'preferences' object to make some changes (ie solution 1583)
- Sample
On the ADN CD, and ADN WEB Site, Developer Consulting Group has
written a sample
named 'DdModify' (command 'DCMOD') which implements an installer and
an ARX-MFC
application which demonstrates all what I have said in that
document. I strongly
suggest you to have a look to it...
To summarize that sample, the installer install the ARX application
on the
hard-drive and register it for demand loading on command invocation.
And the ARX
application initializes itself the first time it is loaded in a
given AutoCAD
for a given Windows login user, and a given AutoCAD profile.
HKEY_CLASSES_ROOT\Interface\{372FA490-600C-11CF-93EB-0800099EB3B7}\ProxyStubClsi
d = {00020424-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT\Interface\{372FA490-600C-11CF-93EB-0800099EB3B7}\ProxyStubClsi
d32 = {00020424-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT\Interface\{9B5492B1-EC9A-11CE-935A-0800099EB3B7}\ProxyStubClsi
d = {00020424-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT\Interface\{9B5492B1-EC9A-11CE-935A-0800099EB3B7}\ProxyStubClsi
d32 = {00020424-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT\Interface\{24B8A4E0-432A-11D0-A893-0800091B9B14}\ProxyStubClsi
d = {00020424-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT\Interface\{24B8A4E0-432A-11D0-A893-0800091B9B14}\ProxyStubClsi
d32 = {00020424-0000-0000-C000-000000000046} |
|