文档章节

Visual Studio 2012 中以管理员身份调试应用程序

北风其凉
 北风其凉
发布于 2016/04/11 22:54
字数 568
阅读 2040
收藏 11

今天写了一个程序,功能是获取任务管理器中的“描述”一列中的内容:

C#代码如下:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GetProcDesc
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] procs = Process.GetProcessesByName("pcas");
            foreach (Process proc in procs)
            {
                try
                {
                    string path = proc.MainModule.FileName.ToString();
                    FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(path);

                    Console.WriteLine("进程:" + proc.ProcessName);
                    Console.WriteLine("路径:" + path);
                    Console.WriteLine("描述:" + fileVersionInfo.FileDescription);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }

            Console.Read();
        }
    }
}

但执行这段代码时,会报错 System.ComponentModel.Win32Exception:拒绝访问

后来我查了一下,发现这个错误与Windows的权限管理有关系,我试着用管理员身份运行编译好的exe程序,此时程序便可正常执行了:

于是我就想,既然用管理员身份就可以正常执行,那能不能直接在 VisualStudio 中就以管理员身份开启程序的调试呢?经过一番研究,答案是肯定的。

我的操作系统是Win7,使用的VS版本是VS2012。

打开程序集的属性窗口,找到“安全性”设置,其中有一个“启用 ClickOnce 安全性设置”,勾选后再反勾选该复选框。

此时在解决方案资源管理器中,就可以找到 app.manifest 文件,勾选“启用 ClickOnce 安全性设置”是为了让VS生成这个文件,取消勾选是为了支持后面对 requestedExecutionLevel 的设置。

打开 app.manifest,将 requestedExecutionLevel 设置为

<requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

如下图所示:


三个level的功能如下:

asInvoker:应用程序就是以当前的权限运行。

highestAvailable:应用程序以当前用户可以获得的最高权限运行。

requireAdministrator:应用程序仅以系统管理员权限运行。

我们将其改为 requireAdministrator

此时再次调试程序时,VS会提示“此任务要求应用程序具有提升的权限”,点击“使用其他凭据重新启动”即可。如果还是弹出之前“拒绝访问”的异常,可尝试重启一下VS。

此时VS会重启,可以看到,重启后的VS左上角的窗体标题上多了一个“(管理员)”

此时再调试程序,就可以直接以管理员身份进行调试了


END

© 著作权归作者所有

北风其凉

北风其凉

粉丝 119
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
Net 下安装、调试的常见问题与错误!!!

作者:多人 出处:csdn Q:新建项目时出错:Visual Studio .NET 已检测到指定Web服务器运行的不是ASP.NET 1.1版。您将无法运行ASP.NET Web应用程序或服务。 Ahttp://support.microsoft.com/de...

晨曦之光
2012/03/09
137
0
VS2015 远程调试:Remote Debugger

一、关于Remote Debugger   使用VS远程调试器Remote Debugger,我们可以调试部署在不同机器上的应用程序,如桌面应用程序和Asp.Net应用程序。 二、Remote Debugger 的获取   获取方式有两...

simpower
07/04
27
0
windows server 2012 r2 App-V 5.1 安装部署

准备软件 1.sqlserver2014 2.mdop2015光盘-----软件下载地址:ed2k://|file|mumicrosoftdesktopoptimizationpack2015x86x64dvd_5975282.iso|3003398144|9CDF964D590C76D3C8E5B948A10F94F0|/ ......

king若风
2018/08/03
0
0
Visual Studio 2012 简体中文版新功能介绍及官方下载地址

Visual Studio是微软公司推出的开发环境。是最流行的Windows平台应用程序开发环境。2012年9月12日微软在西雅图发布Visual Studio 2012。 针对面向不同平台的学生和初学者,提供了面向不同应用...

小星星程序员
2014/08/11
154
1
【C#每日一贴】禁用承载进程----“工程名.vshost.exe”

禁用承载进程 Visual Studio 2012 启用宿主进程可能会对某些 API 的调用产生影响。 在这些情况下,有必要禁用宿主进程以返回正确的结果。 禁用宿主进程 在 Visual Studio 中打开一个项目。 ...

c_o_d_e_r
2013/03/29
249
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
4
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
8
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
872
10
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部