【问题标题】:Access denied when trying to copy file Windows Vista尝试复制文件 Windows Vista 时访问被拒绝
【发布时间】:2009-05-15 04:47:07
【问题描述】:

我有这个需要运行的批处理,用户必须执行它来复制一个简单的 xml 文件。但是,在 Windows 2000/XP 上一切正常。但是,在 Windows Vista 上,我收到错误“拒绝访问”。

即使我尝试在 Vista 上使用 Windows 资源管理器复制文件,我也会遇到同样的错误。

我可以做些什么来制作这个文件副本。我是否必须在我的 bat 文件中添加任何额外的代码才能复制此文件?

非常感谢。

@ECHO OFF
REM copy config file to the windows/system32
copy config.xml c:\windows\system32\DataLinks.xml

【问题讨论】:

  • 没有看到任何与 C# 相关的内容,所以我冒昧地删除了标签并在帖子中提及。如果我错了,请把它放回去。

标签: security windows-vista batch-file uac


【解决方案1】:

我猜这是因为您试图更改 windows\system32。 Vista、7 和未来版本的 Windows 需要提升权限才能更改系统32。

你真的需要把这个文件放在 system32 中吗?如果是任意位置,为什么不将其弹出到用户的 AppData 目录(%AppData%\DataLinks.xml)中?

AppData 是自 Windows 2000 以来一直存在的标准目录,它隐藏在用户的 Documents and Settings 或 Users 文件夹中(取决于版本)。这是一个隐藏但用户可编辑的文件夹,用于用户需要能够访问但大多数情况下仅由您的代码使用的应用程序设置。

【讨论】:

  • 您好,是的。我认为这将是一个更好的主意。但是,windows xp 有相同的文件夹吗?因为这将安装在 xp/vista 和可能的未来版本的 windows 上?
  • 他说“.. 自 Windows 2000 以来就一直存在..”
  • “自 Windows 2000 以来一直存在”。抱歉没有想清楚。谢谢
【解决方案2】:
  1. 您需要提升权限才能复制到 %windir%\system32
  2. 您根本不应该将配置数据复制到 %windir% 中。这适用于 Windows。使用 %AppData%。
  3. 如果您确实复制到 %windir%,请使用 %windir% 变量并且不要对路径 C:\Windows 进行硬编码

【讨论】:

    【解决方案3】:

    JS Bangs 是对的;使用 %windir% 变量。大多数情况下,当您这样做时,它不会给出任何错误。

    例子:

    @ECHO OFF
    REM copy config file to the windows/system32
    copy config.xml %windir%\system32\DataLinks.xml
    

    但是你愿意吗?只要把它放在任何其他的。就像已经说过的 AppData:

    @ECHO OFF
    REM copy config file to the windows/system32
    copy config.xml %appdata%\DataLinks.xml
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多