2013-07-01 2 views
0

Я пытаюсь скопировать файл в папку автозагрузки. Вот мой код:Копирование файла не работает

  String ^path; 
      path = Environment::GetFolderPath(Environment::SpecialFolder::CommonStartup); 
      path += "\\EFM.lnk"; 

      if(!IO::File::Exists(path)) 
       IO::File::Copy("C:\\lng\\EFM.lnk",path); 

Это просто, но не работает. Я хотел бы спросить вас: «почему»?

+0

* Как это не работает? Выбрасывает исключение? Нет ли исключения, но файл назначения не создан? –

+0

@DavidYaw Нет исключений и нет файла назначения. Переменные 'path' и' if() 'в порядке и работают. Только метод «Файл :: Копировать» не работал. –

+1

Имеет ли ваш процесс административные права? Если это не так, проверили ли вы, что папка могла быть перенаправлена ​​на 'C: \ Users \ {ваше имя} \ AppData \ Local \ VirtualStore'? (Кстати, вы должны использовать Path :: Combine(), а не добавлять и беспокоиться о вставке обратных косых черт вручную) – Medinoc

ответ

1

Если в процессе отсутствуют административные права, а его манифест не помечен как осведомленный об изоляции UAC, запись в общую папку автозагрузки (которая требует доступа администратора) может быть бесшумно перенаправлена ​​на C:\Users\{your name}\AppData\Local\VirtualStore.

Это объясняет как отсутствие файла в реальной папке, так и отсутствие UnauthorizedAccessException или любую другую ошибку.

Смежные вопросы