2

我有这个需要运行的批处理,用户必须执行它来复制一个简单的 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
4

3 回答 3

5

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

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

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

于 2009-05-15T04:54:06.390 回答
2
  1. 您需要提升权限才能复制到 %windir%\system32
  2. 您根本不应该将配置数据复制到 %windir% 中。这适用于 Windows。使用 %AppData%。
  3. 如果您确实复制到 %windir%,请使用 %windir% 变量并且不要硬编码路径 C:\Windows
于 2009-05-15T05:02:10.320 回答
0

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
于 2009-05-24T17:39:21.267 回答