在Visual Studio中以非管理员权限调试应用程序

7
我有一个应用程序,旨在在没有管理员权限的情况下运行,但是它在这种情况下失败了。我试图以管理员身份运行我的应用程序,并且它可以运行。但这不是我想要的。
我想要的是一种无需管理员权限即可调试我的应用程序的方法,以便我可以确定在普通用户运行时导致应用程序失败的原因...这样我至少知道是什么原因,并可能使其以不需要管理员权限的方式运行。
每当我运行Visual Studio 2015时,它都会以管理员权限启动。没有办法摆脱标题栏中的“(Administrator)”:

enter image description here

我尝试过使用 runas /netonly /user:User devenv.exe,但没有成功:

enter image description here

如果我尝试在另一个更受限制的帐户下运行VS2015,它会提示需要管理员权限,无法运行:

enter image description here

点击“取消任务并返回Visual Studio”不会返回到VS,而是会关闭。

问题在于,当我以非管理员权限运行我的应用程序时,它无法打开。没有任何消息。但是当我尝试在Visual Studio中进行调试时,它可以运行……因为VS本身只能以管理员身份运行。

有没有一种方法可以在没有管理员权限的情况下进行调试?


你考虑过降低你正在运行的Windows用户的用户账户控制权限吗?或者暂时收回该用户的管理员权限(这将需要注销/登录周期才能生效)? - rory.ap
我会尝试一下...等一下,因为我要学习如何做。谢谢! - Miguel Angelo
是的,我有...当不在管理员模式下时,应用程序运行的时间不够长,无法附加调试器。此外,旧版本的VS似乎可以在没有管理员权限的情况下运行,而VS 2015则不行。 - Miguel Angelo
更改UAC设置没有起作用。它只是在打开之前要求提升权限。 - Miguel Angelo
@Miguel Angelo,如果是这样,请将有帮助的回复标记为答案,如果没有人帮忙,您可以将您的评论分享为答案并标记它,这将有助于其他遇到相同问题的社区成员轻松地研究和找到答案。祝您拥有愉快的一天:) - Jack Zhai
显示剩余9条评论
6个回答

3

有一天我突然面对VS 2019的同一个问题。

  1. 在所有地方(每个快捷方式和exe文件)都没有勾选“以管理员身份运行”复选框。
  2. 在“疑难解答兼容性”对话框中,“该程序需要额外权限”也没有被勾选。

解决方法

更改 devenv.exe (C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe) 的所有权:

  1. 右键单击 devenv.exe > 属性
  2. 进入 安全 标签页。
  3. 点击 高级。(在我的情况下,管理员是该文件的所有者)
  4. 所以点击 更改 来将文件的所有者更改为您的用户帐户。

现在 Visual Studio 启动时不再具有管理员权限,因此调试也是如此。

不幸的是,每次更新后都需要执行此操作。


我尝试了这个方法,但它并没有解决我的问题。在我的情况下,Visual Studio需要提升权限才能访问IIS(而不是Express)中的管理功能。我正在尝试调试一个应用程序在IIS下运行时出现的问题,但在IIS Express中则没有出现。 - Scott Forbes
如果你所登录的账户也是管理员账户,那么这个方法就会起作用。但在我所处的机构中,我们的“普通”账户不允许成为本地管理员,所以他们决定如果我们需要以管理员身份运行某些任务,就要使用一个单独的账户进行提升。问题在于,如果我使用另一个账户进行提升,Visual Studio 就会在另一个配置文件下运行,我的插件、设置和许可证都无法使用。 - Scott Forbes

2

如果你右键点击快捷方式并选择属性,然后选择快捷方式标签页,有一个高级按钮。点击它,你就可以选择不在管理员模式下启动该应用程序。此外,请注意,如果你正在使用IIS,你需要以管理员身份运行VS来进行调试。快捷方式属性


我只在使用iis调试应用程序时需要勾选那个复选框。Windows服务不需要提升权限,桌面应用程序也是如此。你的应用程序需要提升权限做什么?我会从这里开始。Visual Studio不需要管理员权限来调试基本的应用程序。 - Chris Bartlett
那就是问题所在...我不知道,某个第三方库需要管理员权限...而我无法调试以发现是哪一个。 - Miguel Angelo
我的应用程序是桌面应用,使用Windows Forms。 - Miguel Angelo
当你这样做时,你的VS打开时标题栏中就不会显示“(管理员)”了吗?我在这里无法做到这一点。 - Miguel Angelo
说实话,我已经很久没有在 VS 2015 中以非管理员模式运行过了。我刚刚回去检查了一下我维护的一个 Windows 服务,并尝试以非管理员模式运行并进行了调试,完全没有遇到任何问题。它没有提示我提升凭据。 - Chris Bartlett

2
您的Visual Studio安装存在问题。它肯定可以在无管理员权限下运行。然而,您可以采取以下措施解决此问题。
  1. 启动您的应用程序,但不要从Visual Studio中启动,而是导航到已构建的.exe文件并双击它。
  2. 使用Visual Studio中的附加到进程选项来附加到该进程。

如果您的应用程序很快就失败了,那么这当然行不通,您将需要检查您的Visual Studio设置。


1

1
这是一个旧帖子,但我想添加我的输入作为解决方案,在我的情况下有点不同,可能会有所帮助。
我使用Windows 10和Visual Studio 2019遇到了类似的问题。当我按F5(调试)时,会出现“此任务需要应用程序具有提升的权限”的消息。 enter image description here 我尝试了许多推荐的解决方案,但对我没有用。问题在于iisexpress.exe的“IIS Express工作进程”设置被设置为“以管理员身份运行”。我正在尝试修复端口绑定问题,并进行了一些更改,但我忘记撤消了这些更改。
Run project in Visual Studio with Administrator permission and then 
Open task manager > Processes > expand Visual Studio 2019 node > right click on 'IIS Express Worker Process'> properties> Compatibility > uncheck Run as Administrator option

enter image description here


0

关于此案例的更多信息。

我在工作中使用的IT系统非常受限,通常我的VS没有管理员权限就可以启动。但是,为了让我安装更新等操作,我请求将我的.exe添加到以管理员权限启动的软件列表中。这样做了。对于更新很好。

因此,我认为,没有办法临时启动我的VS而不具备管理员权限。

当我尝试使用以下代码从控制台应用程序使用Outlook Interop时,我遇到了类似的问题:

        Outlook.Application application = null;

        // Check whether there is an Outlook process running.
        if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
        {
            // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
            application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
        }
        else
        {

            // If not, create a new instance of Outlook and log on to the default profile.
            application = new Outlook.Application();
        }

        // Return the Outlook Application object.
        return application;

当我使用管理员权限启动VS(因此我的控制台应用程序)时,如果Outlook没有启动,则会收到以下错误:
System.Runtime.InteropServices.COMException (0x800401E3): Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

然后我尝试直接从调试文件夹中运行.exe文件启动相同的代码,它正常工作。

感谢好的提示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接