C:\Windows\System32\drivers\etc文件夹中iCalendar 文件类型的hosts文件是干嘛用的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C:\Windows\System32\drivers\etc文件夹中iCalendar 文件类型的hosts文件是干嘛用的相关的知识,希望对你有一定的参考价值。
Hosts文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,实现DNS的功能,它可以由计算机的用户进行控制。Hosts文件的存储位置在不同的操作系统中并不相同,甚至不同Windows版本的位置也不大一样:
Windows NT/2000/XP/2003/Vista:默认位置为%SystemRoot%\\system32\\drivers\\etc\\,但也可以改变。
例如 c:\\windows\\system32\\drivers\\etc\\
动态目录由注册表键\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\ Services\\Tcpip\\Parameters\\DataBasePath决定。
Windows 95/98/Me:%WinDir%\\
用记事本打开hosts文件,就可以看见了微软对这个文件的说明。Hosts文件文一般有如下面的基本内容
# Copyright (c) 1993-1999 Microsoft Corp.
Hosts文件(5) #
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a \'#\' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost
这个文件是根据TCP/IP for Windows 的标准来工作的。它的作用是定义IP地址和
Host name(主机名)的映射关系,是一个映射IP地址和Host name (主机名)
的规定。这个规定中,要求每段只能包括一个映射关系,也就是一个IP地址和一个与之有映射关系的主机名。 IP地址要放在每段的最前面,映射的Host
name(主机名)在IP后面,中间用空格分隔。对于这段的映射说明,用“#”分割后用文字说明。
Hosts文件的工作方式
现在让我们来看看Hosts在Windows中是怎么工作的。
我们知道在网络上访问网站,要首先通过DNS服务器把要访问的网络域名(XXXX.com)解析成XXX.XXX.XXX.XXX的IP地址后,计算机才能对这个网络域名作访问。
要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,因为DNS做域名解析和返回IP都需要时间。
为了提高对经常访问的网络域名的解析效率,可以通过利用Hosts文件中建立域名和IP的映射关系来达到目的。根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个网络域名映射关系。如果有则,调用这个IP地址映射,如果没有,再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。
Hosts文件的工作方式和具体作用
现在来看一下Hosts文件的工作方式以及它在具体使用中起哪些作用。
1、加快域名解析
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
2、方便局域网用户
在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。这对不少人来说
相当麻烦。现在可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。
3、屏蔽网站
现在有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域
名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWSX系统中,约定127.0.0.1为本地计算机的IP地址,
0.0.0.0是错误的IP地址。
如果,我们在Hosts中,写入以下内容:
127.0.0.1 # 要屏蔽的网站 A
0.0.0.0 # 要屏蔽的网站 B
这样,计算机解析域名 A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站A 和B的目的。
4、顺利连接系统
对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。
屏蔽不想访问的网站的例子
这里给出一些收集到的利用Hosts文件对一些网址屏蔽的例子,共大家学习使用Hosts文件时参考。
例1.
在 hosts文件中加入如下内容就可以屏蔽文件中定义的对应的网址。
127.0.0.1 localhost
127.0.0.1 download.3721.com
127.0.0.1 3721.com #3721网络实名
127.0.0.1 3721.net #3721网络实名
127.0.0.1 cnsmin.3721.com #3721网络实名
127.0.0.1 cnsmin.3721.net #3721网络实名
127.0.0.1 download.3721.com #3721网络实名
127.0.0.1 download.3721.net #3721网络实名
127.0.0.1 www.3721.com #3721网络实名
127.0.0.1 www.3721.net #3721网络实名
例2.
在 hosts文件中加入如下内容就可以屏蔽文件中定义的对应的网址。
127.0.0.1 localhost
127.0.0.1 bar.baidu.com #百度IE搜索伴侣
127.0.0.1 www.baidu.com #百度IE搜索伴侣
127.0.0.1 baidu.com #百度IE搜索伴侣
最后要指出的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。 参考技术A HOSTS.ICS 是使用 Internet 连接共享时自动生成的,包含网络中 IP 地址至主机名的映射信息。你不用干预这个文件。本回答被提问者采纳
使用 C++ 显示 C:\Windows\System32\config 的内容
【中文标题】使用 C++ 显示 C:\\Windows\\System32\\config 的内容【英文标题】:Show contents of C:\Windows\System32\config using C++使用 C++ 显示 C:\Windows\System32\config 的内容 【发布时间】:2019-12-16 16:24:00 【问题描述】:我正在尝试列出C:\Windows\System32\config
目录的文件。
我试过像这样使用QDir::entryList()
QDir dir(R"(C:\Windows\System32\config)");
dir.setFilter(QDir::Hidden | QDir::AllEntries | QDir::System | QDir::NoDotAndDotDot);
qDebug().noquote() << dir.entryInfoList();
我也试过像这样使用std::filesystem::directory_iterator
std::string path = R"(C:\Windows\System32\config)";
for (const auto& entry : std::filesystem::directory_iterator(path))
qDebug().noquote() << entry.path().string().c_str();
两者都给了我相同的输出:
C:\Windows\System32\config\ELAM
C:\Windows\System32\config\Journal
C:\Windows\System32\config\RegBack
C:\Windows\System32\config\systemprofile
C:\Windows\System32\config\TxR
文件管理器向我显示此输出:
C:\Windows\System32\config\BBI
C:\Windows\System32\config\BCD-模板
C:\Windows\System32\config\COMPONENTS
C:\Windows\System32\config\DEFAULT
C:\Windows\System32\config\DRIVERS
C:\Windows\System32\config\ELAM
C:\Windows\System32\config\Journal
C:\Windows\System32\config\netlogon.ftl
C:\Windows\System32\config\RegBack
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SECURITY
C:\Windows\System32\config\SOFTWARE
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\config\systemprofile
C:\Windows\System32\config\TxR
C:\Windows\System32\config\VSMIDK
操作系统:Windows 10
问题是如何使用 C++ 获得相同的输出?
【问题讨论】:
也许您没有访问这些文件的权限? @PaulMcKenzie 我是这么想的,但如果 Explorer 显示他们,那么他的用户帐户就有权限。我想知道这是否是一个提升的过程?但是我无法复制。 使用提升的权限从命令行运行您的程序。该目录的特殊之处在于(对我而言)需要管理员权限才能访问它。 嗯,奇怪,我的两个 Windows 虚拟机(Win10 和 2019)对这些文件有不同的权限...... 【参考方案1】:这可能是权限问题,如果您在资源管理器的属性窗口中查看“安全”选项卡,您可能会看到某些文件对“用户”组具有“读取”权限,但有些文件只有权限用于“系统”和“管理员”。
当您在 Windows 中运行程序时,即使从管理员帐户运行,它通常也无需提升权限即可运行,因此它无法访问具有更多受限权限的文件。
您可以显式运行提升的程序,例如右键单击 exe/快捷方式和“以管理员身份运行”。请注意,对于 Visual Studio,您可以以管理员身份运行 VS。
如果您的程序总是需要运行提升,您可以这样设置,在 VS 中,在“链接器”->“清单文件”上有“UAC 执行级别”选项,“最高可用”或“requireAdministrator”选项可能有用。
如果您正在启动子进程,您可以选择在该点提升,例如使用ShellExecuteEx
,如果需要,这将导致 UAC 弹出窗口。
【讨论】:
感谢您的回答。我已经以管理员身份运行应用程序并使用清单文件。我还检查了安全选项卡中的权限。管理员拥有文件夹的完全访问权限【参考方案2】:时隔1年9个月,我终于找到了解决办法。
当我尝试使用列表文件时,我正在构建一个 32 位应用程序并且有 Wow64 重定向。有两种方法可以解决这个问题:
-
构建 64 位应用程序
disable redirect
【讨论】:
以上是关于C:\Windows\System32\drivers\etc文件夹中iCalendar 文件类型的hosts文件是干嘛用的的主要内容,如果未能解决你的问题,请参考以下文章
加载C:\WINDOWS\system32\geogk.dll内存分配无效
c:\windows\system32\mcdsrv16_080124模块找不到
C:\WINDOWS\system32\dmserver.dll的作用,它现在无法启动!