2015-07-03 215 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

如果需要管理员权限,则唯一的方法是使用提升提示复制它们的第二个进程。 –