为什么我无法打开我的注册表项

爵士乐

第一次提问,希望我做对了...

我正在尝试编写一个小程序来更改 Internet Explorer 主页的 reg 密钥,但是每次运行它时,我都会收到密钥位置打开失败的错误。任何想法为什么?(尝试在管理员中运行)

//this string array will be the value for the new home page (w/ null termination)
char newHomePage[] = "https://www.youtube.com/watch?v=gwJ_LgYYvpU \0";
HKEY homePageKey = NULL; //handle for the key once opened


//Open reg key we wish to change, if this fails then abort 

//reg key for home page 
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"\\SOFTWARE\\Microsoft\\Internet Explorer\\Main", 0, KEY_SET_VALUE, &homePageKey) == ERROR_SUCCESS)
{
    printf("Key location open successful \n");
    if (RegSetValueExW(homePageKey, L"Start Page", 0, REG_SZ, (LPBYTE)&newHomePage, sizeof(char)) == ERROR_SUCCESS)
    {
        printf("Key changed in registry \n");
    }
    else 
    {
        printf("Key not changed in registry \n");
        printf("Error %u ", (unsigned int)GetLastError());
    }
    RegCloseKey(homePageKey);
}
else
{
    printf("Error: %u \n", (unsigned int)GetLastError());
    printf("Key location open UNsuccessful \n");
    system("pause");
    RegCloseKey(homePageKey);
    return 0;
}

return 0;
雷米勒博

您的代码有几个问题:

  1. 将子项指定为RegCreateKeyEx()时,请勿包含前导斜杠RegOpenKeyEx()

  2. 您将 URL 作为 ANSI 字符串传递给需要 Unicode 字符串的函数。并且您指定了错误的数据大小。

  3. 您从 获取错误代码GetLastError(),但 Registry API 不SetLastError()用于报告错误。错误代码在函数返回值中返回。

试试这个:

//this string array will be the value for the new home page (w/ null termination)
const wchar_t newHomePage[] = L"https://www.youtube.com/watch?v=gwJ_LgYYvpU\0";
HKEY homePageKey = NULL; //handle for the key once opened

//Open reg key we wish to change, if this fails then abort
//reg key for home page
LONG lResult = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer\\Main", 0, KEY_SET_VALUE, &homePageKey);
if (lResult == ERROR_SUCCESS)
{
    printf("Key location open successful \n");
    lResult = RegSetValueExW(homePageKey, L"Start Page", 0, REG_SZ, (LPBYTE)newHomePage, sizeof(newHomePage)); // or (lstrlenW(newHomePage)+1)*sizeof(wchar_t)
    if (lResult == ERROR_SUCCESS)
    {
        printf("Key changed in registry \n");
    }
    else
    {
        printf("Key not changed in registry \n");
        printf("Error %ld \n", lResult);
    }
    RegCloseKey(homePageKey);
}
else
{
    printf("Key location open UNsuccessful \n");
    printf("Error: %ld \n", lResult);
}
system("pause");
return 0;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能更改Window 7注册表项?

来自分类Dev

为什么我无法从 WSO2 ESB API 检索本地注册表项值?

来自分类Dev

尽管我以SYSTEM身份运行,为什么我仍无法在Windows服务上运行或编辑其注册表项?

来自分类Dev

C ++为什么我的代码将注册表项放在错误的目录中?

来自分类Dev

为什么我的代码找不到任何注册表项?

来自分类Dev

C ++为什么我的代码将注册表项放在错误的目录中?

来自分类Dev

为什么我的程序看不到有注册表项?

来自分类Dev

无法在Eventlog下创建注册表项,我在管理员组中

来自分类Dev

为什么我的MultiAdapter无法注册?

来自分类Dev

为什么在注册表项中设置了hidebasedonvelocityid标志?

来自分类Dev

无法读取注册表项

来自分类Dev

无法删除注册表项

来自分类Dev

无法读取注册表项

来自分类Dev

无法创建注册表项

来自分类Dev

为什么我无法打开VS项目

来自分类Dev

为什么我的Ubuntu软件无法打开?

来自分类Dev

为什么在我提交注册表时给我错误

来自分类Dev

为什么我的注册表写报告没有错误但没有效果?

来自分类Dev

为什么即使我没有复制注册表数据库,我的私有npm注册表也列出了所有公共npm模块?

来自分类Dev

无法读取C ++中的注册表项

来自分类Dev

无法读取C ++中的注册表项

来自分类Dev

锁定注册表项,使其无法编辑

来自分类Dev

为什么我无法在 Firebase 上注册新用户?

来自分类Dev

删除注册表项-发生了什么

来自分类Dev

来自Access ODBC的“常规错误,无法打开注册表项临时(易失)...”

来自分类Dev

我的网页无法识别注册表中填写的数据

来自分类Dev

为什么gpedit和相应的注册表项不同步?

来自分类Dev

为什么我的Android导航抽屉无法打开

来自分类Dev

为什么SceneBuilder 2.0无法打开我的fxml文件?

Related 相关文章

  1. 1

    为什么我不能更改Window 7注册表项?

  2. 2

    为什么我无法从 WSO2 ESB API 检索本地注册表项值?

  3. 3

    尽管我以SYSTEM身份运行,为什么我仍无法在Windows服务上运行或编辑其注册表项?

  4. 4

    C ++为什么我的代码将注册表项放在错误的目录中?

  5. 5

    为什么我的代码找不到任何注册表项?

  6. 6

    C ++为什么我的代码将注册表项放在错误的目录中?

  7. 7

    为什么我的程序看不到有注册表项?

  8. 8

    无法在Eventlog下创建注册表项,我在管理员组中

  9. 9

    为什么我的MultiAdapter无法注册?

  10. 10

    为什么在注册表项中设置了hidebasedonvelocityid标志?

  11. 11

    无法读取注册表项

  12. 12

    无法删除注册表项

  13. 13

    无法读取注册表项

  14. 14

    无法创建注册表项

  15. 15

    为什么我无法打开VS项目

  16. 16

    为什么我的Ubuntu软件无法打开?

  17. 17

    为什么在我提交注册表时给我错误

  18. 18

    为什么我的注册表写报告没有错误但没有效果?

  19. 19

    为什么即使我没有复制注册表数据库,我的私有npm注册表也列出了所有公共npm模块?

  20. 20

    无法读取C ++中的注册表项

  21. 21

    无法读取C ++中的注册表项

  22. 22

    锁定注册表项,使其无法编辑

  23. 23

    为什么我无法在 Firebase 上注册新用户?

  24. 24

    删除注册表项-发生了什么

  25. 25

    来自Access ODBC的“常规错误,无法打开注册表项临时(易失)...”

  26. 26

    我的网页无法识别注册表中填写的数据

  27. 27

    为什么gpedit和相应的注册表项不同步?

  28. 28

    为什么我的Android导航抽屉无法打开

  29. 29

    为什么SceneBuilder 2.0无法打开我的fxml文件?

热门标签

归档