Сообщение об ошибке «В дисководе нет диска» от приложения, которое было только что скопировано с компакт-диска с помощью пакетного файла xcopy, но которое вообще не требует этого

Сообщение об ошибке «В дисководе нет диска» от приложения, которое было только что скопировано с компакт-диска с помощью пакетного файла xcopy, но которое вообще не требует этого

Все,

У меня есть интересная проблема, на которую я искал ответ везде и не нашел. Надеюсь, кто-то сможет пролить свет на то, почему это происходит.

У меня есть CD, содержащий несколько приложений C++ и пакетный файл, который запускается для копирования файлов в нужные места с помощью XCOPY. Да, операция xcopy проходит успешно, и новые приложения помещаются в нужные места.

Проблема, с которой я сталкиваюсь, заключается в том, что сразу после того, как пакетный файл закончил копировать файл, я закрываю окно пакетного файла, извлекаю компакт-диск и запускаю любое из недавно скопированных приложений из нового расположения на компьютере. Я получаю ошибку Windows "В дисководе нет диска. Вставьте диск в дисковод D:". (Это имя моего CD-привода)

Мои программы НЕ содержат ссылок на какие-либо жестко заданные/относительные пути вообще. Фактически, как только я признаю эту ошибку 4 или 5 раз и снова открываю программу, я НИКОГДА не вижу ошибку снова. Чтобы увидеть, как ошибка снова появляется, мне нужно снова запустить пакетный файл с компакт-диска и вынуть компакт-диск перед запуском приложения.

Для большего пояснения, ручное копирование/вставка (Ctrl+c, Ctrl+v) приложения с диска работает нормально. Если я вручную копирую/вставляю и извлекаю CD, программа работает нормально. Эта ошибка возникает только при первом запуске программы после того, как я копирую ее с помощью пакетного файла и извлекаю CD перед запуском программы. Кроме того, перезагрузка компьютера после запуска пакетного файла также предотвращает возникновение этой проблемы.

Я знаю, о чем вы говорите, если перезагрузка компьютера после копирования файла решает проблему, то почему он задает этот вопрос здесь? Ну, мне нужно скопировать этот файл на 30+ несетевых компьютеров одновременно, и перезагрузка каждого из них занимает МНОГО времени.

Есть ли какие-то странные метки Windows для приложений, когда они копируются с помощью XCOPY туда, где программа все еще думает, что она находится на CD после копирования? Есть ли у кого-нибудь предложения, комментарии или ссылки, которые могут указать мне правильное направление? Любая помощь была бы феноменальной.

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

EDIT: Я забыл упомянуть, что это касается операционной системы Windows XP.

EDIT2: Вот код моего пакетного файла.


@ECHO OFF

SET INSTALLSERVER=%~dp0
SET AppProgramFiles=%ProgramFiles%\ApplicationName\

XCOPY "%INSTALLSERVER%Scenario\*.*" "%AppProgramFiles%Scenario\" /C /Y /q
XCOPY "%INSTALLSERVER%Plan\*.*" "%AppProgramFiles%Plan\" /C /Y /q
XCOPY "%INSTALLSERVER%Data" "%AppProgramFiles%Data\" /C /Y /q /e
XCOPY "%INSTALLSERVER%Misc\*.*" "%AppProgramFiles%Misc\" /C /Y /q


Как я уже упоминал выше, я могу скопировать/вставить приложение самостоятельно, и программа будет работать просто отлично. Если я сделаю это таким образом, НЕ будет НИКАКОЙ ошибки. Ошибка «Нет диска в приводе» появляется ТОЛЬКО если я копирую приложение с помощью пакетного файла. На самом деле, я видел ту же проблему, если я копирую приложение с помощью файла vbscript. Мне интересно, есть ли в Windows XP какой-то странный способ помечать приложения, которые копируются с компакт-диска с помощью процесса типа batch/vbscript? Есть идеи?

Связанный контент