2015-07-03 216 views
0

我爲Visual Studio開發了一個VSPackage,它需要將一些文件複製到Visual Studio的安裝路徑如何將管理員權限授予我的VSPackage?

如果我以管理員身份運行Visual Studio(使用我安裝的VSPackage時)。它可以複製沒有錯誤的文件。

當我正常運行Visual Studio時,出現Access to the path ... is denied錯誤。

問題

我怎樣才能把我的VSPackage到管理員權限,即使在Visual Studio正在運行作爲一個普通用戶。

或者至少,我怎麼能調用是這樣的:

enter image description here

+0

將您的擴展安裝爲MSI – ErikEJ

+1

前幾天我回答了您的其他問題之一;它回答這個問題,以及... http://stackoverflow.com/questions/30874782/how-get-the-current-running-visual-studio-installation-path-from-vspackage – Matze

+0

實際上,這並沒有工作我。謝謝你 –

回答

1

你的包是一個.dll(裝上的過程),而不是一個.exe(過程),因此它不能擁有與其進程不同的權限(Visual Studio,即devenv.exe)。你的軟件包可以做的是啓動一個具有管理權限的不同進程。請參閱我的文章:

HOWTO: Launch a process with admin rights from a Visual Studio add-in on Windows Vista or higher.

這就是說,它是一個非常錯誤的方法來做到這一點,將文件複製到VS安裝路徑。這應該通過你的軟件包(.msi)而不是你的軟件包來完成。

一方面,一旦安裝完成,用戶可以拒絕提升提示,文件不會被複制,並且安裝不完整。沒有這些文件,你的軟件包能正常運行嗎

另一方面,如果用戶拒絕安裝包的提示提示,它根本不會被安裝,這是一種更乾淨的方法。

+0

我的VSPackage更新了一些代碼片段和Visual Studio中的xml模式文件。爲此,軟件包應該從服務器下載文件(每當有新文件可用時),並將其複製到Visual Studio的文件夾中。每次用戶都可以通過單擊菜單欄上的命令強制更新片段和模式。片段正在服務器上定期更新。這就是說我們不止一次複製文件。所以msi不能成爲一種選擇。你認爲實現這個最好的方法是什麼?謝謝。 –

+0

我不確定xml模式文件,但是有關代碼片段Visual Studio允許存儲在C:\ Users \ \ Documents \ Visual Studio \ Code Snippets中的每個用戶代碼片段。我想必須有一個API將它們導入那裏,並且它不應該要求管理員權限,因爲它們是每個用戶。 –

+2

如果需要管理員權限,則唯一的方法是使用提升提示覆制它們的第二個進程。 –