吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1073|回复: 14
收起左侧

[求助] C++如何实现写win10 hosts文件

[复制链接]
朱朱你堕落了 发表于 2023-3-22 12:39
666吾爱币
本帖最后由 朱朱你堕落了 于 2023-3-22 14:26 编辑

的确是权限问题,谢谢各位大佬回复。

最佳答案

查看完整内容

你的代码没问题,问题在这里。 你把UAC执行级别调成这个。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
huyuyu + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

董督秀 发表于 2023-3-22 12:39
朱朱你堕落了 发表于 2023-3-22 14:16
是啊,为什么我下载了你编译的,就可以修改成功呢?这么神奇吗?

你的代码没问题,问题在这里。

你把UAC执行级别调成这个。

2023-03-22_141630.jpg
侃遍天下无二人 发表于 2023-3-22 13:02
hiplease 发表于 2023-3-22 13:03
wkfy 发表于 2023-3-22 13:07
直接问chatGTP给的答案。
[C++] 纯文本查看 复制代码
#include <iostream>
#include <fstream>
int main() {
    std::ofstream myfile;
    myfile.open("C:\\Windows\\System32\\drivers\\etc\\hosts", std::ios_base::app);
    if (!myfile.is_open()) {
        std::cout << "Error opening file";
        return -1;
    }
    myfile << "127.0.0.1 localhost" << std::endl;
    myfile.close();
    return 0;
}

免费评分

参与人数 3吾爱币 -2 热心值 +2 收起 理由
苏紫方璇 -3 禁止使用ChatGPT或其他AI生成的答案解答问题
朱朱你堕落了 + 1 + 1 已测试,不管用。
Broadm + 1 我很赞同!

查看全部评分

tianruo1987 发表于 2023-3-22 13:54
这个问题,八成是hosts文件权限问题。我工作中经常会需要添加hosts
董督秀 发表于 2023-3-22 14:05
为啥我编译出来的能在win10 x64虚拟机修改这个文件......
公共链接: https://t.wss.ink/f/asaldqmkaym

点评

是啊,为什么我下载了你编译的,就可以修改成功呢?这么神奇吗?  详情 回复 发表于 2023-3-22 14:16
ljl727ljl 发表于 2023-3-22 14:05
跟着大佬好学习!
Atlantis908 发表于 2023-3-22 14:06
使用文件替换大法

1、在桌面建个TXT文件:hosts.txt
2、把C盘里的hosts文件里的内容,全部复制粘贴到hosts.t
3、桌面hosts.txt文件加一行:127.0.0.1 www.baidu.com
4、把C盘的hosts文件改个名:host_bak
5、把桌面的hosts.txt文件改名,去掉后缀.txt,改成hosts
6、把桌面的hosts文件放到C盘去

完事。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
朱朱你堕落了 + 1 + 1 跑题了,用代码实现,老哥。

查看全部评分

debug_cat 发表于 2023-3-22 14:13

要在Windows 10中修改Hosts文件,您需要具有管理员权限才能进行更改。如果您的程序没有足够的权限,它将无法写入Hosts文件。您可以使用以下方法:

以管理员身份运行您的C++程序,这样您就有足够的权限来修改Hosts文件。

在代码中使用Windows API函数来提升您的程序权限。以下是一个示例代码:

#include <iostream>
#include <windows.h>

int main() {
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;

    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
        std::cout << "Failed to open process token." << std::endl;
        return 1;
    }

    if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid)) {
        std::cout << "Failed to lookup privilege value." << std::endl;
        CloseHandle(hToken);
        return 1;
    }

    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL)) {
        std::cout << "Failed to adjust token privileges." << std::endl;
        CloseHandle(hToken);
        return 1;
    }

    CloseHandle(hToken);

    // 现在你有足够的权限来修改Hosts文件了
      //在这里写你修改的代码
    return 0;
}

免费评分

参与人数 2吾爱币 -3 热心值 +1 收起 理由
苏紫方璇 -3 禁止使用ChatGPT或其他AI生成的答案解答问题
朱朱你堕落了 + 1 热心回复!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-11 20:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表