图解VS 2012 中以管理员身份调试应用程序

2025-04-29 06:40:57

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

图解VS 2012 中以管理员身份调试应用程序

2、C#代码如下:usingSystem;u衡痕贤伎singSystem.Collections.Generic;usingSystem.Diagn泠贾高框ostics;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceGetProcDesc{classProgram{staticvoidMain(string[]args){Process[]procs=Process.GetProcessesByName("pcas");foreach(Processprocinprocs){try{stringpath=proc.MainModule.FileName.ToString();FileVersionInfofileVersionInfo=FileVersionInfo.GetVersionInfo(path);Console.WriteLine("进程:"+proc.ProcessName);Console.WriteLine("路径:"+path);Console.WriteLine("描述:"+fileVersionInfo.FileDescription);}catch(Exceptionex){Console.WriteLine(ex.ToString());}}Console.Read();}}}

3、但执行这段代码时,会报错 System.ComponentModel.Win32Exception:拒绝访问,如下图所示:

图解VS 2012 中以管理员身份调试应用程序

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

图解VS 2012 中以管理员身份调试应用程序

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

6、打开程序集的属性窗口,找到“安全性”设置,其中有一个“启用 ClickOnce 安全性设置”,勾选后再反勾选该复选框,如下图所示:

图解VS 2012 中以管理员身份调试应用程序

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

图解VS 2012 中以管理员身份调试应用程序

8、打开 app.manifest,将 re孥恶膈茯questedExecutionLevel 设置为<requestedExecutio荏鱿胫协nLevellevel="highestAvailable"uiAccess="false"/>如下图所示:三个level的功能如下:asInvoker:应用程序就是以当前的权限运行。highestAvailable:应用程序以当前用户可以获得的最高权限运行。requireAdministrator:应用程序仅以系统管理员权限运行。我们将其改为 requireAdministrator

图解VS 2012 中以管理员身份调试应用程序

9、此时再次调试程序时,VS会提示“此任务要求应用程序具有提升的权限”,点击“使用其他凭据重新启动”即可,如下图所示:

图解VS 2012 中以管理员身份调试应用程序

10、此时VS会重启,可以看到,重启后的VS左上角的窗体标题上多了一个“(管理员)”,如下图所示:

图解VS 2012 中以管理员身份调试应用程序

11、此时再调试程序,就可以直接以管理员身份进行调试了,如下图所示:

图解VS 2012 中以管理员身份调试应用程序
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢