论坛风格切换切换到宽版
  • 1898阅读
  • 2回复

请教老虎版主,提取注册表路径问题 [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-08-21
用户被禁言,该主题自动屏蔽!
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-08-22
第一:上面的代码中用了 i 作为计数变量,所以部分代码被吃掉了。先把正确的代码恢复出了,而且不要用 i 作为变量!!!
function CADPath(Param:string): String;
var
  n, j: Integer;
  filePath: String;
  subkeynames1, subkeynames2: TArrayOfString;
begin
  Result:=ExpandConstant('{pf}');
   if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, 'SOFTWARE\Autodesk\AutoCAD', subkeynames1) then
    for n:= 0 to GetArrayLength(subkeynames1)-1 do
     if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, 'SOFTWARE\Autodesk\AutoCAD\'+subkeynames1[n], subkeynames2) then
        for j:= 0 to  GetArrayLength(subkeynames2)-1 do
          if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Autodesk\AutoCAD\'+subkeynames1[n]+'\'+subkeynames2[j], 'AcadLocation', filepath) then
            Result:=filePath;
end;

第二:上面的代码本身应该没有问题。如果效果不是你预期的,原因可能是在 64位系统上运行的缘故,而应用程序是 32位的,其注册表位置也相应地在 WOW6432NODE 下。常量 HKEY_LOCAL_MACHINE 或者 HKLM 在 32 位 和 64 位系统下所指的内容是不同的。具体参看帮助文件。

第三:你说的 Passolo 版本我没有汉化。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 2 发表于: 2015-08-22
用户被禁言,该主题自动屏蔽!