乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 264|回复: 14

VBScripting我的注册表之路

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-5-22 17:16:00 | 显示全部楼层 |阅读模式
好的,我是VBScript新手,并且(尝试)写入注册表,所以请温柔。
我写了一些这样的代码:
  1.   Dim WshShell
  2. Dim KeyName, ValueName, ValueData As String
  3.         
  4. Set WshShell = WScript.CreateObject("WScript.Shell")
  5.    
  6.   KeyName = "HKEY_USERS\S-1-5-21-1749436377-938699083-1307212239-11542\Software\Autodesk\AutoCAD\R16.2\ACAD-4008:409\Profiles\Test\General"
  7.   ValueName = "SheetSetTemplatePath"
  8.   ValueData = "I:\Path\Test"        
  9.             
  10.    
  11.     WshShell.RegWrite KeyName & ValueName & ValueData"
  12.     WshShell = Nothing

我确信代码中有一些错误,因为它在我身上出错了。
我有点惊讶,我不确定为什么它在创建WScript.Shell对象时出错,但它似乎就在那里。
如果有人能帮助我朝着正确的方向前进,我将不胜感激。
此外,我想知道是否也可以从AutoCAD VBA中访问WScript.Shell对象?
谢谢你,
马克

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-5-22 18:10:34 | 显示全部楼层
如果这有帮助,这在VBA中有效:
  1. Sub testme()
  2. Dim scrpt As New WshShell
  3. Dim DataVal As String
  4. Dim regKey As String
  5. regKey = "HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.1\ACAD-6000:409\Profiles\Civil3D\General\SheetSetTemplatePath"
  6. DataVal = scrpt.RegRead(regKey)
  7. scrpt.RegWrite regKey, DataVal & "\subFolder"
  8. Debug.Print scrpt.RegRead(regKey)
  9. scrpt.RegWrite regKey, DataVal ''return it to it's origianl state
  10. End Sub

回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-5-23 10:06:47 | 显示全部楼层

杰夫
它似乎不起作用,我得到了一个未定义的用户定义类型。
您确定VBA中有一个名为New WshShell的对象吗?
马克
回复

使用道具 举报

0

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2007-5-23 16:24:12 | 显示全部楼层
嗯,必须添加对WindowsScriptingHost的引用,然后才能工作。抱歉没有提到那部分.....
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-5-24 00:21:53 | 显示全部楼层

所以你是说我设置的引用应该看起来像这样:?
Set scrpt = CreateObject(“New WshShell”)
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-5-24 06:15:20 | 显示全部楼层
否,
在VBA中,可以在VBA编辑器中添加对类型库的引用。这使代码知道如何构建特定的对象模型。我不知道VB脚本是否有相同的引用
但是如果它不寻找通过API调用编辑注册表的代码,则不需要引用。
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-5-24 08:16:04 | 显示全部楼层
另外,在你打开注册表之前,一定要确保你做了一个备份。你可以在那里快速冲洗你的电脑!!!!
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-5-24 09:23:24 | 显示全部楼层

是的,
我确实备份了注册表,我确实意识到它在浑浊的水中踩踏。
在某些情况下,VBA 可以访问一些与 VBSCript 相同的对象。
例如,我相信你可以通过VBA访问The FileSystemObject,但我不相信像The WSCript.Shell Object那样。
据我所知,似乎没有一种简单的方法可以通过VBA写入注册表。
这让我有点生气:realmad:AutoDesk将允许通过VBA API设置大多数路径,但由于某种奇怪的原因,其他一些路径无法访问。
因此,您如何以编程方式设置路径而不直接转到注册表。
有谁知道通过VBA实现这一目标的“有限”方法吗?
谢谢
马克
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-5-24 10:19:30 | 显示全部楼层
标记-
尝试将下面的代码放入.vbs文件中:
  1. Dim WshShell
  2. Dim KeyName
  3. Dim ValueData
  4.         
  5. Set WshShell = WScript.CreateObject("WScript.Shell")
  6.    
  7.   KeyName = "HKEY_USERS\S-1-5-21-1749436377-938699083-1307212239-11542\Software\Autodesk\AutoCAD\R16.2\ACAD-4008:409\Profiles\Test\General\SheetSetTemplatePath"
  8.   
  9.    ValueData = "I:\Path\Test"        
  10.             
  11.    
  12.     WshShell.RegWrite KeyName, ValueData
  13.     Set WshShell = Nothing

回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-5-24 15:15:31 | 显示全部楼层
嘿,戴夫,谢谢
以下代码有效!它将路径写入注册表
  1. Dim WshShell
  2. Dim KeyName
  3. Dim ValueData
  4.         
  5. Set WshShell = WScript.CreateObject("WScript.Shell")
  6.    
  7. KeyName = "HKEY_USERS\S-1-5-21-1749436377-938699083-1307212239-11542\Software\Autodesk\AutoCAD\R16.2\ACAD-4008:409\Profiles\Test\General\SheetSetTemplatePath"
  8.   
  9.    ValueData = "I:\Path\Test"        
  10.             
  11.    
  12.     WshShell.RegWrite KeyName, ValueData
  13.     Set WshShell = Nothing

在VBA中,它通过删除Wscript并简单地说:
来工作
  1. Dim WshShell
  2. Dim KeyName as String
  3. Dim ValueData as String
  4.         
  5. [b]Set WshShell = CreateObject("WScript.Shell")[/b]
  6. KeyName = "HKEY_USERS\S-1-5-21-1749436377-938699083-1307212239-11542\Software\Autodesk\AutoCAD\R16.2\ACAD-4008:409\Profiles\Test\General\SheetSetTemplatePath"
  7.   
  8. ValueData = "I:\Path\Test"        
  9.             
  10.    
  11. WshShell.RegWrite KeyName, ValueData
  12. Set WshShell = Nothing

然而,他们都没有更新我的ACAD配置文件中的路径,这是我需要的最终结果
知道为什么CAD中没有更新它吗
谢谢
马克
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 17:47 , Processed in 3.170345 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表