我正在创建一个Windows实用程序,部分允许用户激活Windows。当我用slmgr /ato
运行命令system()
时,出现错误“ 0x80004001 Not Implemented(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的计算机上时,这种方式才会失败。
答案 0 :(得分:0)
好的,我终于想通了。我将程序编译为32位应用程序,因为最初将其编译为64位时遇到了麻烦。 Windows不允许32位应用程序访问64位库和可执行文件,并且显然也适用于它们创建的任何子进程。我的猜测是slmgr.vbs脚本尝试访问64位文件或库,但找不到它,因此出现“未实现”错误消息。我将其重新编译为64位应用程序,现在看来工作正常。这肯定测试了我的耐心。