我发现了Jscript的一个Bug!开来看!

lyn11091 2004-03-11 08:32:20
我需要使用Jscript读取注册表中的指定键的键值。但是这个键的名字(E.g.ab\c)里有“\”这个字符。我使用代码:objWshShell.RegRead("HKCU\\Software\\ab\c");
读取键software里的"ab\c"的值。
现在就出现这样的一个问题:
因为“\”在Jscript的字符串里是作为转义字符的,所以“ab\c”里Jscript把“\c”当作了一个转义字符;但是如果使用“\\”写呢,Jscript又会把“ab”当作注册表的一个键,把“c”当成了名字。

这是不是一个Bug?

哪位高手有解决的办法啊?
...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
喝醉的咖啡 2004-05-08
  • 打赏
  • 举报
回复
补充一下:
>否则,如果 c 是 ab 项下的一个键,那么这样的操作读取的是默认value
这样的情况应该这么写:
JScript/JavaScript: objWshShell.RegRead("HKCU\\Software\\ab\\c\\");
或者
VBScript: Call objWshShell.RegRead("HKCU\Software\ab\c\")
结尾一个"\"明确的告诉 RegRead 要读取一个键的默认值

RegRead MethodSee Also
RegDelete Method | RegWrite Method

Applies To: WshShell Object
语言
JScript

VBScript

全部显示
Returns the value of a key or value-name from the registry.

object.RegRead(strName)

Arguments
object
WshShell object.
strName
String value indicating the key or value-name whose value you want.
喝醉的咖啡 2004-05-08
  • 打赏
  • 举报
回复
不是 bug

首先,这不是 JavaScript/JScript 的问题
我注意到你使用的是 WScript.Shell 组件对象的 RegRead 方法来读取注册表
objWshShell.RegRead("HKCU\\Software\\ab\\c");
参数为
VBScript 写法 "HKCU\Software\ab\c"
JavaScript/JScript 写法 "HKCU\\Software\\ab\\c"

问题不在于怎么写,在于 RegRead 方法的参数要求
HKCU\Software\ab\c
c 必须是注册表项 Software 下的Key(键) ab 下的一个Value name
否则,如果 c 是 ab 项下的一个键,那么这样的操作读取的是默认value

呵呵,所以说不是一个bug,更不是 Javascript/JScript 的 bug
查一下 MSDN 关于 WScript.Shell 对象的 RegRead 方法的参数说明吧

  • 打赏
  • 举报
回复
是bug!

3,424

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧