【急】Winform 下在WIN7 的开发 如何跳过UAC 的 提示信息

时间:2022-02-03 10:07:25
  在 WIN7 下开发程序,当需要到 Program Files 下 写入东西时,会遭遇到UAC的 阻拦,请问如何跳过UAC的阻止?

11 个解决方案

#1


该回复于2009-06-19 09:23:05被版主删除

#2


ding

#3


顶个  呼叫高手啊!

#4


这个是没办法跳过的。可以认为相关的UAC拦截都来自于系统内部,是保护系统免受未授权修改的重要方式。

同Vista和Windows 7兼容的一个方式就是不要往Program Files等敏感目录写入内容,而是写入ProgramData或者当前账户的AppData等目录中。

#5


哦 , 管理员在往Program Files 中写入东西时,UAC会弹出一个对话框,只要点击确定就能够写入了,, 那在程序中能不能捕获这个消息,让他弹出UAC的对话框呢?这个用C#怎么实现啊?

#6


UAC的对话框必须要手工点击,是不能在程序中捕获或者拦截的,否则UAC岂不是形同虚设了。

请仔细学习一下微软官方的文档,不要做些无谓的研究。

#7


谢lextm的忠告,我的意思是在程序中遇到需要弹出UAC的地方会直接弹出错误,就是有没有什么办法,在需要弹出UAC提示的地方,让他弹出WIN7的UAC提示对话框,而不是直接报错。 

#8


官方的文档里面提到两种方法。

一则是给你的程序假如manifest文件,并且要求这个exe一定要先弹出UAC且用户接收后才可以执行,这样就可以保证总是有足够权限。有点类似Windows自带的注册表编辑器。

另一则是将需要提升权限的部分独立到一个COM工程中,这样在主程序调用这个COM的时候弹出UAC临时提升权限,若用户拒绝提升,也可以很从容的自定义报个错误来。

像我上面回复的,这些都可以在MSDN的Vista专区上面找到。

#9


引用 8 楼 lextm 的回复:
官方的文档里面提到两种方法。 

 我找了下 MSDN上说的也比较笼统,具体该怎么做呢?请问楼上,你的第一种方法具体该怎么做的,有详细点的资料吗?呵呵,我还不是很理解  谢谢哈

#10


假如你使用Visual Studio 2008开发的话,你会发现每个工程都可以带一个manifest文件。只需要按照下面博客的方式设置就好了,

http://blogs.msdn.com/nikhiln/archive/2007/04/19/embed-a-manifest-to-make-an-application-elevate-in-vista.aspx

#11


http://www.viathink.com

#1


该回复于2009-06-19 09:23:05被版主删除

#2


ding

#3


顶个  呼叫高手啊!

#4


这个是没办法跳过的。可以认为相关的UAC拦截都来自于系统内部,是保护系统免受未授权修改的重要方式。

同Vista和Windows 7兼容的一个方式就是不要往Program Files等敏感目录写入内容,而是写入ProgramData或者当前账户的AppData等目录中。

#5


哦 , 管理员在往Program Files 中写入东西时,UAC会弹出一个对话框,只要点击确定就能够写入了,, 那在程序中能不能捕获这个消息,让他弹出UAC的对话框呢?这个用C#怎么实现啊?

#6


UAC的对话框必须要手工点击,是不能在程序中捕获或者拦截的,否则UAC岂不是形同虚设了。

请仔细学习一下微软官方的文档,不要做些无谓的研究。

#7


谢lextm的忠告,我的意思是在程序中遇到需要弹出UAC的地方会直接弹出错误,就是有没有什么办法,在需要弹出UAC提示的地方,让他弹出WIN7的UAC提示对话框,而不是直接报错。 

#8


官方的文档里面提到两种方法。

一则是给你的程序假如manifest文件,并且要求这个exe一定要先弹出UAC且用户接收后才可以执行,这样就可以保证总是有足够权限。有点类似Windows自带的注册表编辑器。

另一则是将需要提升权限的部分独立到一个COM工程中,这样在主程序调用这个COM的时候弹出UAC临时提升权限,若用户拒绝提升,也可以很从容的自定义报个错误来。

像我上面回复的,这些都可以在MSDN的Vista专区上面找到。

#9


引用 8 楼 lextm 的回复:
官方的文档里面提到两种方法。 

 我找了下 MSDN上说的也比较笼统,具体该怎么做呢?请问楼上,你的第一种方法具体该怎么做的,有详细点的资料吗?呵呵,我还不是很理解  谢谢哈

#10


假如你使用Visual Studio 2008开发的话,你会发现每个工程都可以带一个manifest文件。只需要按照下面博客的方式设置就好了,

http://blogs.msdn.com/nikhiln/archive/2007/04/19/embed-a-manifest-to-make-an-application-elevate-in-vista.aspx

#11


http://www.viathink.com