Доступ запрещен при попытке скопировать файл Windows Vista - PullRequest
2 голосов
/ 15 мая 2009

У меня есть этот пакет, который нужно запустить, который должен выполнить пользователь, который скопирует простой XML-файл. Тем не менее, все отлично работает на Windows 2000 / XP. Однако в Windows Vista появляется сообщение «Отказано в доступе».

Даже когда я пытаюсь скопировать файл, используя Windows Explorer в Vista, я получаю ту же ошибку.

Могу ли я что-нибудь сделать, чтобы скопировать этот файл? Нужно ли добавлять какой-либо дополнительный код в мой bat-файл, чтобы разрешить копирование этого файла?

Большое спасибо.

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

Ответы [ 3 ]

5 голосов
/ 15 мая 2009

Полагаю, это потому, что вы пытаетесь изменить windows \ system32. Vista, 7 и будущая версия Windows требуют повышенных привилегий для изменения system32.

Вам действительно нужно поместить этот файл в system32? Если это произвольное расположение, почему бы не вставить его в каталог пользовательских приложений (% AppData% \ DataLinks.xml)?

AppData - это стандартный каталог, существующий со времен Windows 2000, который скрывается в папке «Документы и настройки» пользователя или в папке «Пользователи» (в зависимости от версии). Это скрытая, но редактируемая пользователем папка, предназначенная для параметров приложения, к которым пользователь должен иметь возможность получить доступ, но в основном будет использоваться только вашим кодом.

2 голосов
/ 15 мая 2009
  1. Вам нужны повышенные привилегии для копирования в% windir% \ system32
  2. Вы вообще не должны копировать данные конфигурации в% windir%. Это для Windows. Использовать% AppData%.
  3. Если вы копируете в% windir%, используйте переменную% windir% и не указывайте путь C: \ Windows
0 голосов
/ 24 мая 2009

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
...