2013-11-25 2 views
0

Мы используем «hobocopy» для запуска резервных копий файлов PST.VB.NET - запустить оболочку без UAC?

Проблема заключается в том, что при запуске hobocopy открывается диалоговое окно «Контроль доступа пользователя» с запросом разрешения на запуск.

Я использую «Shell» в VB.net для запуска hobocopy, но он должен работать в фоновом режиме и тихо.

Есть ли способ запустить команду «Shell» с правами администратора, чтобы она не запрашивала разрешения?

+1

Если бы вы могли, разве это не побеждало бы цель, для которой был установлен UAC? –

ответ

1

Я понимаю, что ваше приложение запускает hobocopy из кода, который вы написали.

Если вы хотите сделать это без UAC строки, то у вас есть два варианта:

  • отключить UAC
  • запуска приложения с повышенными правами (например, «Запуск от имени администратора» (не рекомендуется!))

В типичной ситуации я бы не рекомендовал ни одно из них, но если вам нужно запустить hobocopy, то (из описания приложения) я бы предположил, что нет никакой опции без UAC.

Еще одна вещь, которую вы можете попробовать, - щелкнуть правой кнопкой мыши приложение или ярлык в Windows, выбрать «Свойства» и включить параметр «Запуск от имени администратора» в этом диалоговом окне. В зависимости от точных разрешений, запрошенных приложением, этот может избежать запросов UAC. (Например: он работает для диспетчера задач, но не для Regedit, у меня нет проверки на Hobocopy).

+0

У меня была встреча об этом. Похоже, я сделаю вместо этого свою собственную версию hobocopy. Спасибо за ваши предложения. – MRC

+0

Не то, чтобы это мое дело, но причина, по которой hobocopy запрашивает повышение UAC, заключается в том, что это * требуется * для операции, которую вы делаете. Существуют две возможности: либо вам требуется теневое копирование, которое предоставляет hobocopy, и в этом случае любая написанная вами версия также потребует повышения UAC, или вы этого не сделаете - в этом случае ваш выбор инструмента неверен, и вы можете легко сделать это с помощью другой инструмент, который не требует hobocopy. В любом случае, сворачивание ваших собственных вряд ли будет лучшим решением (если только это не метод 'File.Copy'). –

0

Зачем использовать Shell alltogether?

Попробуйте использовать

System.Diagnostics.Process 
System.Diagnostics.ProcessStartInfo 

это дает вам больше возможностей, например, чтобы не запустить его в оболочке, или выполнить программка в определенном контексте (например, другим пользователем)

Редактировать : Поскольку Dan point out это не решает проблему UAC, так вот еще несколько мыслей

После поиска в сети для решений я быстро заметил, что там есть способов победить UAC, но это Hacks. Поэтому, если вам нужно победить UAC для гладкого HMI, наиболее вероятно, что ошибка дизайна.

Пути решения этой проблемы могут включать в себя:

  • Выполнение hobocopy в качестве администратора (необходимо включить учетную запись администратора)
  • -> Eigther путь Дэн описано, или с помощью ProcessStartInfo.User
  • Disabeling UAC
  • Взлом вашего пути в состояние повышенного разрешения
  • Выполнение программы или вспомогательного процесса в качестве службы , взаимодействуя с ним через ServiceControl

Только последний из них представляется мне законным решением, но для его изменения потребуется изменение. Выполнение части программного обеспечения для резервного копирования на мероприятии или графике мне кажется чем-то вроде сервис должен делать в любом случае.

+0

Вам все равно потребуется повышение UAC, если это то, что требует приложение. –

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