C++/c#修改hosts文件

简介:   c++ #include #include #include  #include  using namespace std; int main() { ofstream outf; char * lpFileName="C...

 

c++

#include<iostream>
#include<fstream>
#include <WTypes.h>
#include <Winbase.h>
using namespace std;
int main()
{
ofstream outf;
char * lpFileName="C:\\Windows\\System32\\drivers\\etc\\hosts";
DWORD   dwAttribute   =   ::GetFileAttributes(lpFileName);
if(dwAttribute   &   FILE_ATTRIBUTE_READONLY)
{
dwAttribute   &=   ~FILE_ATTRIBUTE_READONLY;
SetFileAttributes(lpFileName,dwAttribute);
}
outf.open("C:\\Windows\\System32\\drivers\\etc\\hosts" , ifstream::in);//要覆盖文件,把最后一个参数去掉
outf<<"\n# Copyright (c) 1993-1999 Microsoft Corp.";
outf<<"\n#";
outf<<"\n# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.";
outf<<"\n#";
outf<<"\n# This file contains the mappings of IP addresses to host names. Each";
outf<<"\n# entry should be kept on an individual line. The IP address should";
outf<<"\n# be placed in the first column followed by the corresponding host name.";
outf<<"\n# The IP address and the host name should be separated by at least one";
outf<<"\n# space.";
outf<<"\n#";
outf<<"\n# Additionally, comments (such as these) may be inserted on individual";
outf<<"\n# lines or following the machine name denoted by a '#' symbol.";
outf<<"\n#";
outf<<"\n# For example:";
outf<<"\n#";
outf<<"\n# 102.54.94.97 rhino.acme.com # source server";
outf<<"\n# 38.25.63.10 x.acme.com # x client host";
outf<<"\n127.0.0.1 localhost";
outf<<"\n";
outf.close();
return 0;
}

////追加

#include<iostream>
#include<fstream>
#include <STRING>
#include <WTypes.h>
#include <Winbase.h>
using namespace std;
int main()
    {
    ofstream outf;
    ifstream inf;
    cout<<" 开始设置本地域名,如果杀毒软件弹出窗口,请选择允许/信任\n";
    char * lpFileName="C:\\Windows\\System32\\drivers\\etc\\hosts";
    DWORD   dwAttribute   =   ::GetFileAttributes(lpFileName);
    DWORD   wrAttribute=dwAttribute;
    if(dwAttribute   &   FILE_ATTRIBUTE_READONLY)
    {
        wrAttribute   =   dwAttribute&~FILE_ATTRIBUTE_READONLY;
        SetFileAttributes(lpFileName,wrAttribute);//去掉只读属性
    }
    inf.open(lpFileName,ios::in);
    string line;
    bool haskinpan=false;
    system("color 0A");
    while(getline(inf,line))
    {
        //cout<<line<<endl;
        if(line=="192.168.0.100 local.kinpan.com")
            {
            haskinpan=true;
            cout<<" 已经设置,您可以通过 local.kinpan.com 访问本地测试网站 \n";
            break;
        }
    }
inf.close();
if(haskinpan==false){
    outf.open("C:\\Windows\\System32\\drivers\\etc\\hosts" , ios::app);//追加
    outf<<"\n192.168.0.100 local.kinpan.com";
    outf<<"\n";
    outf.close();
    cout<<"设置成功! 您可以通过 local.kinpan.com 访问本地测试网站\n";
}
    SetFileAttributes(lpFileName,dwAttribute);//恢复只读属性
    cout<<" 按任意键关闭\n";
    system("pause");
    return 0;
}

 c#

//using System.IO;
string fpath = @"C:\WINDOWS\system32\drivers\etc\hosts";
File.SetAttributes(@fpath, FileAttributes.Normal);
FileStream fs = new FileStream(@fpath, FileMode.Append); //写入的方式可改变,这里是追加
StreamWriter sw = new StreamWriter(fs);

//写入的一行内容
sw.WriteLine("127.0.0.1     www.tt.com");

//写入大量内容前面加 “@”符号
sw.WriteLine(@"0.0.0.0 www.bfaft.com
0.0.0.0 bbs.bfaft.com
0.0.0.0 bfaft.com
");
sw.Close();
fs.Close();

 

 

相关文章
|
17天前
|
C#
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
|
13天前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
3月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
34 0
Linux c/c++文件的基本操作
|
3月前
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
61 1
|
4月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
4月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
3月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
78 0
|
3月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
107 0
|
3月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
165 0
|
4月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
59 0