调试Visual Studio中没有管理员权限的应用程序

问题描述 投票:5回答:5

我有一个应用程序打算在没有管理员权限的情况下运行,但在那种情况下失败了。我试图以管理员身份运行我的应用程序,然后运行。但这不是我想要的。

我想要的是一种在没有管理员权限的情况下调试我的应用程序的方法,以便我可以确定在以普通用户身份运行时导致它失败的原因...这样我至少知道原因是什么,并且可能在一种没有管理员权限的方式。

每当我运行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本身只以管理员身份运行。

有没有管理员权限调试的方法?

c# debugging visual-studio-2015
5个回答
2
投票

如果右键单击快捷方式并选择属性,则选择快捷方式选项卡,有一个高级按钮。单击该按钮,然后您可以选择他的应用程序以不以管理模式启动。此外,请注意,如果您使用的是iis,则需要VS以管理模式运行才能进行调试。 Shortcut properties


2
投票

Visual Studio安装有问题。它可以肯定无需管理员运行。但是,你可以解决这个问题。

  1. 根据需要启动您的应用程序,但不能从Visual Studio中启动,但导航到内置的.exe,例如双击它。
  2. 使用Visual Studio中的Attach to process选项附加到进程。

如果您的应用程序很快失败,这当然不起作用,您将需要查看Visual Studio设置。


2
投票

从一天到另一天,我遇到了与VS 2019相同的问题。

  1. “管理员运行”复选框随处可见(每个快捷方式和exe文件)未选中
  2. 同样在“疑难解答兼容性”对话框中,“该程序需要其他权限”未选中。

解决方案: 更改devenv.exeC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe)的所有权:

  1. 右键单击devenv.exe> Properties
  2. 转到“安全”选项卡。
  3. 单击高级。 (在那里,管理员是文件的所有者,在我的情况下)
  4. 因此,请单击“更改”以将文件的所有者编辑为您的用户帐户。

现在Visual Studio在没有管理员权限的情况下启动,因此也进行了调试。


1
投票

所以问题是它仍然以管理员的身份打开VS,即使你只是打开你身边的空白VS IDE,我是对的吗?

请确保您未在​​启用兼容性故障排除或VS IDE快捷方式或devenv.exe的属性设置下启用“程序需要其他权限”:

https://blog.devoworx.net/2016/01/06/this-task-requires-the-application-to-have-elevated-permissions/

https://superuser.com/questions/547810/how-to-turn-off-always-run-as-administrator-windows-8


0
投票

有关此案例的其他信息。

我的IT系统非常受限制,通常我的VS在没有管理员权限的情况下启动。但是,为了允许我安装更新等,我请求将我的.exe放在以admin权限开头的软件列表中。那事发生了。适合更新。

因此,我认为,如果没有管理员权限,我怎么可能暂时启动我的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文件直接从调试文件夹启动相同的代码,它工作正常。

谢谢你的好提示。

© www.soinside.com 2019 - 2024. All rights reserved.