Доступ ограничен файлом hosts

vb.net vbscript

507 просмотра

2 ответа

Когда я запускаю свою программу в Visual Studio, она прекрасно работает без прав администратора. Но когда я запускаю программу, используя .exe файл, произошла ошибка - Доступ к пути, который C:/Windows/System32/drivers/etc/hostя пытался запустить как администратор, не работает вообще!

Вот мой код -

Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("C:/Windows/System32/drivers/etc/hosts", True)
file.WriteLine("127.0.0.1 " + www.google.lk)
file.Close()
Автор: Yohan Aravinda Источник Размещён: 08.11.2019 11:14

Ответы (2)


0 плюса

Решение

У вас установлена ​​какая-либо антишпионская программа? Некоторые будут препятствовать изменению файла hosts. Этот VBScript работает для меня. Удаляет атрибут только для чтения, выполняет редактирование и повторно применяет атрибут только для чтения. Поскольку в нем есть некоторый повторяющийся код, его, вероятно, следует модифицировать, чтобы иметь функцию, которая была бы более «правильной».

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Const ForReading =   1
Const ForWriting =   2
Const ForAppending = 8
Const ReadOnly =     1

strWinDir = WshShell.ExpandEnvironmentStrings("%windir%")
HostsFile = strWinDir & "\System32\drivers\etc\hosts"

Set objFile = objFSO.GetFile(HostsFile)
If objFile.Attributes AND ReadOnly Then
  objFile.Attributes = objFile.Attributes XOR ReadOnly
End If

Set objFile = objFSO.OpenTextFile(HostsFile, ForAppending)
objFile.WriteLine(vbNewLine & "127.0.0.1 www.google.lk")
objFile.Close

Set objFile = objFSO.GetFile(HostsFile)
If Not objFile.Attributes AND ReadOnly Then
  objFile.Attributes = objFile.Attributes XOR ReadOnly
End If

Код для удаления той же строки.

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Const ForReading =   1
Const ForWriting =   2
Const ForAppending = 8
Const ReadOnly =     1

strWinDir = WshShell.ExpandEnvironmentStrings("%windir%")
HostsFile = strWinDir & "\System32\drivers\etc\hosts"

Set objFile = objFSO.GetFile(HostsFile)
If objFile.Attributes AND ReadOnly Then
  objFile.Attributes = objFile.Attributes XOR ReadOnly
End If

Set objFile = objFSO.OpenTextFile(HostsFile, ForReading)

Do Until objFile.AtEndOfStream
  strLine = objFile.ReadLine
    If InStr(strLine, "127.0.0.1 www.google.lk") = 0 Then
      strContents = strContents & strLine & vbCrLf
    End If
Loop
objFile.Close

Set objFile = objFSO.OpenTextFile(HostsFile, ForWriting)
objFile.Write strContents
objFile.Close

Set objFile = objFSO.GetFile(HostsFile)
If Not objFile.Attributes AND ReadOnly Then
  objFile.Attributes = objFile.Attributes XOR ReadOnly
End If
Автор: Randy Schuman Размещён: 22.08.2016 03:08

0 плюса

Как видите, писать могут только администраторы.

 C:\Windows\system32>icacls "C:\Windows\System32\drivers\etc\hosts"

 C:\Windows\System32\drivers\etc\hosts NT AUTHORITY\SYSTEM:(I)(F)

                                       BUILTIN\Administrators:(I)(F)

                                       BUILTIN\Users:(I)(RX)

                                       APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)

 Successfully processed 1 files; Failed processing 0 files
Автор: user6737972 Размещён: 20.08.2016 12:03
Вопросы из категории :
32x32