1

我正在为我的应用程序编写一个自动启动,但如果应用程序在重新启动之前没有正常关闭,我会遇到问题,密钥会丢失。我首先使用 RegCloseKey,现在我将其更改为 RegFlushKey,但它仍然无法正常工作。我必须添加什么才能立即写入注册表?

     WriteReg PROC 
          invoke RegCreateKeyExW,HKEY_CURRENT_USER,offset regkey,NULL,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,offset hIDKey,NULL
          .IF eax==ERROR_SUCCESS
            invoke lstrlenW,offset buf
            add eax,eax
            add eax,2
            invoke RegSetValueExW,hIDKey,offset keyname,NULL,REG_SZ,offset buf,eax
            invoke RegFlushKey,hIDKey
          .ENDIF 
 ret 
 WriteReg ENDP 
4

1 回答 1

0

MSDN 状态:

如果函数成功,则返回值为 ERROR_SUCCESS。

如果函数失败,则返回值是 Winerror.h 中定义的非零错误代码。

您是否检查过返回的值是什么RegCreateKeyExW?例如,您可能遇到访问权限问题。

调用也是一样RegSetValueEx:它会返回ERROR_SUCCESS吗?

作为一般经验法则,您应该始终检查 API 调用返回的代码。

于 2013-01-27T22:07:51.413 回答