【问题标题】:C# Text-stream access deniedC# 文本流访问被拒绝
【发布时间】:2012-09-11 17:03:20
【问题描述】:

我猜你很了解这个文件,它是一个将一些 IP 绑定到主机名的文件。

C:\Windows\System32\Drivers\etc\hosts

记事本可以对此文件进行更改,但 C# Text-stream 无法对其执行任何操作并显示为 access denied

任何想法为什么会发生这种情况?

附注: 我的用户有足够的权限编辑该文件,因为我可以使用记事本编辑它,但我的程序不能。

编辑: 还有一件事,它不适用于在 ActiveDirectory 中创建的用户。不是来自这台计算机的用户。他们是管理员,但不是所有者。

可能是所有权问题?

【问题讨论】:

  • 似乎是权限问题。使用 SysInternals 的 Process Monitor 检查发生了什么。
  • 这是什么操作系统?在 Windows 7 上,访问 hosts 文件需要管理命令提示符。您的程序是否以与正在运行的记事本相同的用户身份运行?
  • @Joe Windows 7 是的,同一个用户。
  • @TomasVoracek 感谢您的建议,是的,这一定是权限问题,但记事本有修改权限...
  • 即使以管理员身份运行也不行!

标签: c# file-io authorization hosts


【解决方案1】:

UAC???您需要以提升的权限运行您的应用程序...还尝试保存您在记事本中编辑的文件?真的有用吗?

【讨论】:

  • @ALi 如果您没有运行具有提升权限的记事本,您并没有真正覆盖文件,它可能正在写入%localappdata%\Virtual Store\Windows\System32\Drivers\etc\hosts 而不是真实文件。
  • @HenkHolterman 他可能正在使用某种记事本替代品(例如 Notepad++,但我认为这也是可视化感知)并将其称为记事本。我只是想覆盖所有的基础
  • @ScottChamberlain 很好的提示,但我应该检查一下。
  • @ScottChamberlain - 不,虚拟化只发生在不支持 Vista/Win7 的程序中。 (因错别字重发)
  • P.S:我不使用任何记事本替换。
【解决方案2】:

尝试将清单添加到您的程序并请求必要的权利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2021-09-18
    • 2012-09-05
    相关资源
    最近更新 更多