Зачем использовать Shell alltogether?
Попробуйте использовать
System.Diagnostics.Process
System.Diagnostics.ProcessStartInfo
это дает вам больше возможностей, например, чтобы не запустить его в оболочке, или выполнить программка в определенном контексте (например, другим пользователем)
Редактировать : Поскольку Dan point out это не решает проблему UAC, так вот еще несколько мыслей
После поиска в сети для решений я быстро заметил, что там есть способов победить UAC, но это Hacks. Поэтому, если вам нужно победить UAC для гладкого HMI, наиболее вероятно, что ошибка дизайна.
Пути решения этой проблемы могут включать в себя:
- Выполнение hobocopy в качестве администратора (необходимо включить учетную запись администратора)
- -> Eigther путь Дэн описано, или с помощью ProcessStartInfo.User
- Disabeling UAC
- Взлом вашего пути в состояние повышенного разрешения
- Выполнение программы или вспомогательного процесса в качестве службы , взаимодействуя с ним через ServiceControl
Только последний из них представляется мне законным решением, но для его изменения потребуется изменение. Выполнение части программного обеспечения для резервного копирования на мероприятии или графике мне кажется чем-то вроде сервис должен делать в любом случае.
Если бы вы могли, разве это не побеждало бы цель, для которой был установлен UAC? –