gpt4 book ai didi

c++ - 从 C++ 程序激活 Windows 时出错

转载 作者:可可西里 更新时间:2023-11-01 10:41:05 26 4
gpt4 key购买 nike

我正在创建一个 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 位应用程序,现在似乎可以正常工作。这绝对是在考验我的耐心。

关于c++ - 从 C++ 程序激活 Windows 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56808707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com