2013-11-25 72 views
0

我們使用「hobocopy」來運行PST文件的備份。VB.NET - 運行沒有UAC的shell?

問題是,當hobocopy運行時,它彈出一個「用戶訪問控制」對話框,詢問是否允許運行。

我在VB.net中使用「Shell」來運行hobocopy,但它需要在後臺運行並安靜地運行。

有沒有辦法用管理員權限運行「Shell」命令,所以它不會問權限?

+1

如果可以,那不是打敗了它的UAC已經到位的目的是什麼? –

回答

1

我的理解是,您的應用程序正在從您編寫的代碼啓動hobocopy。

如果你想做到這一點沒有任何UAC提示,那麼你有兩個選擇:

  • 禁用UAC
  • 啓動您使用提升的權限的應用程序(即「以管理員身份運行」(不推薦!) )

在一個典型的情況下,我不會推薦這兩種方法之一,但是如果你必須運行hobocopy(從應用程序的描述),我會想象沒有UAC-free選項。你可以嘗試

的另一件事是用鼠標右鍵單擊該應用程序或快捷方式在Windows中,選擇「屬性」,並啓用「以管理員身份運行」,在對話框選項。根據應用程序請求的確切權限,此可能會避免UAC提示。 (例如:它適用於任務管理器,而不是註冊表編輯器,我沒有Hobocopy測試。)

+0

剛剛就此事開了個會。它看起來像我將製作我們自己的hobocopy版本。感謝您的建議。 – MRC

+0

不,這是我的事,但hobocopy詢問UAC提升的原因是因爲被*爲必填*的操作你在幹什麼。兩種可能性:要麼你需要的陰影複製是hobocopy提供,在這種情況下,你寫的任何版本也需要UAC提升,或者你沒有 - 在這種情況下,你的工具選擇是不正確的,你可以很容易地做到這一點了不需要hobocopy的不同工具。無論哪種方式,滾動你自己不可能是最好的解決方案(除非它只是'File.Copy'方法)。 –

0

爲什麼一起使用Shell?

嘗試使用

System.Diagnostics.Process 
System.Diagnostics.ProcessStartInfo 

它給你更多的可能性,如不能在shell中運行它,或者在一個特定的上下文中執行PROGRAMM(如其他用戶)

編輯:作爲丹點的出這不能解決問題UAC,所以這裏些心思

搜索網的解決方案之後,我很快就注意到,有擊敗UAC的方法,但這些都是黑客。因此,如果您需要擊敗UAC以獲得流暢的HMI,那麼大多數情況下都會出現設計錯誤。

方法來解決這個問題可以包括:

  • 執行hobocopy管理員身份(需要啓用管理員帳戶)
  • - > Eigther丹描述的方式,或者通過使用ProcessStartInfo.User
  • Disabeling UAC
  • 將您的方式升級到提升的權限狀態
  • 將程序或輔助進程作爲服務運行,通過ServiceControl連接它

只有後者在我看來是合法的解決方案,但需要重新設計您的應用程序。 在事件或時間表上執行一個備份軟件在我看來似乎是一個服務應該做任何事情。

+0

但是,如果應用程序需要它,仍然需要UAC提升。 –