none
在windows7下开发的时候使用RegOpenKeyEx被拒绝访问了要怎么解决? RRS feed

  • 问题

  • 今天刚换了windows7系统,结果开发的时候就出现这问题了。XP下这个工程都能正常运行。WINDOWS7下就有问题了,跟踪完发现在RegOpenKeyEx处返回了错误代码5,是说被拒绝访问了。要怎么解决?
    2009年8月8日 12:02

答案

  • 读取就不要用KEY_ALL_ACCESS了

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 嗜血者 2009年8月8日 18:43
    2009年8月8日 15:38
    版主

全部回复

  • 在XP下用普通用户身份运行看看。如果运行不了的话,修改你的程序以避免访问管理员才有权限访问的系统资源。
    单独写一个管理程序,然后在开始菜单中的快捷方式中用runas命令以其他身份运行。


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月8日 13:28
    版主
  • 我要访问的注册表地址是"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Speech\\Voices\\Tokens\\" 
    HKEY hres=NULL;
    LONG err=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Speech\\Voices\\Tokens\\",0,KEY_ALL_ACCESS,&hres);
    结果err等于5.
    windows7下,我用administrator管理员帐户登陆的会这样。如果是XP话就会正常了。

    2009年8月8日 15:27
  • UAC的原因,Vista以后资源管理器默认在普通用户身份下运行,启动的程序也只有普通用户身份。建议不向系统请求不必要的权限。
    你为什么要写入这个注册表键?要注册语音识别引擎的话应该在安装而不是在运行的时候做。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月8日 15:33
    版主
  • 问题是安装的时候都无法往该处写入值。我也没写入,只是读取该处的子健信息。XP系统下,我安装完引擎该处就会出现新的子健,而windows7的时候安装完引擎该处根本没有创建任何子健.

    2009年8月8日 15:37
  • 读取就不要用KEY_ALL_ACCESS了

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 嗜血者 2009年8月8日 18:43
    2009年8月8日 15:38
    版主
  • 如果哪天需要往这些地方写入的时候不就又有问题了?我都按照网络上说的方法把自己的帐户提升为管理员。结果提了半天也没用,按他们的说法administrator帐户就是管理员帐户,结果我进这帐户还是没用。我就先把打开注册表的权限降下看看会不会出错。^_^

    2009年8月8日 15:51
  • 要写入这种管理操作的话,单独写一个管理程序,然后在开始菜单中的快捷方式中用runas命令以其他身份运行。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月8日 15:55
    版主
  • 对于用户来说这样不就很麻烦了?而且,这也只适合静态写入,如果要动态的往该注册表里写入的话不就成问题了。不会每次需要写入的时候就提醒用户到命令行中执行下runas命令吧?

    2009年8月8日 16:10
  • 麻烦一点比被病毒感染好。资源管理器就这么干的,每次需要提升权限的时候让用户确认。

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月8日 16:16
    版主
  • 我宁愿让病毒感染,也不喜欢麻烦。对于个人用户来说一般人电脑上的资料被删除损失并不大。被病毒感染也就顶多格式化掉。而且自身多注意的话,能染上病毒的几率并不大。我刚弄了下终于进入管理员帐户了。原来只进admin帐户还不够。还要关闭掉UAC才可以。^_^,谢谢版主啦。

    2009年8月8日 18:42
  • 好吧,今天我也碰到这个问题了!我是去读取key 返回值也是5,大神怎么解决?
    2011年2月14日 3:09