C++ 从c+激活windows时出错+;程序

C++ 从c+激活windows时出错+;程序,c++,windows,activation,C++,Windows,Activation,我正在创建一个windows实用程序,部分允许用户激活windows。当我使用system()运行命令slmgr/ato时,我得到错误“0x80004001未实现(SWbemObjectEx)”。当我尝试从cmd执行相同的命令时,效果很好。还应该注意的是,它并不是每次都失败,有一半的时间它工作得非常好。起初,我认为可能是我连续执行命令的速度太快了,但增加延迟似乎没有什么区别 void activateWindows(char* key) { EnableWindow(Main_activ

我正在创建一个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的计算机上时,才会以这种方式失败。

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