【问题标题】:Error when activating windows from c++ program从 C++ 程序激活 Windows 时出错
【发布时间】:2019-11-10 12:26:54
【问题描述】:

我正在创建一个 Windows 实用程序,它部分允许用户激活 Windows。当我使用system() 运行命令slmgr /ato 时,我收到错误“0x80004001 未实现(SWbemObjectEx)”。当我尝试从 cmd 执行相同的命令时,它工作正常。还应该注意的是,它不会每次都失败,有一半的时间它工作得很好。一开始我以为可能是我连续执行命令太快了,但是添加延迟似乎并没有什么不同。

void activateWindows(char* key)
{
    EnableWindow(Main_activate_win, false);
    char cmd[41];
    sprintf(cmd, "slmgr /ipk %s", key);
    system(cmd);
    //Sleep(5000);
    system("slmgr /ato");
    EnableWindow(Main_activate_win, true);
}

编辑:似乎只有在安装到以前安装了不同版本的 Windows 的机器上时才会以这种方式失败。

【问题讨论】:

    标签: c++ windows activation


    【解决方案1】:

    好吧,我终于想通了。我将我的程序编译为 32 位应用程序,因为最初将其编译为 64 位时遇到了问题。 Windows 不允许 32 位应用程序访问 64 位库和可执行文件,显然这也适用于它们创建的任何子进程。我的猜测是 slmgr.vbs 脚本试图访问 64 位文件或库,但找不到它,因此出现“未实现”错误消息。我重新编译为 64 位应用程序,现在似乎工作正常。这绝对考验了我的耐心。

    【讨论】:

      猜你喜欢
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多