11 个解决方案
#1
#2
ding
#3
顶个 呼叫高手啊!
#4
这个是没办法跳过的。可以认为相关的UAC拦截都来自于系统内部,是保护系统免受未授权修改的重要方式。
同Vista和Windows 7兼容的一个方式就是不要往Program Files等敏感目录写入内容,而是写入ProgramData或者当前账户的AppData等目录中。
同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专区上面找到。
一则是给你的程序假如manifest文件,并且要求这个exe一定要先弹出UAC且用户接收后才可以执行,这样就可以保证总是有足够权限。有点类似Windows自带的注册表编辑器。
另一则是将需要提升权限的部分独立到一个COM工程中,这样在主程序调用这个COM的时候弹出UAC临时提升权限,若用户拒绝提升,也可以很从容的自定义报个错误来。
像我上面回复的,这些都可以在MSDN的Vista专区上面找到。
#9
我找了下 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
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
#2
ding
#3
顶个 呼叫高手啊!
#4
这个是没办法跳过的。可以认为相关的UAC拦截都来自于系统内部,是保护系统免受未授权修改的重要方式。
同Vista和Windows 7兼容的一个方式就是不要往Program Files等敏感目录写入内容,而是写入ProgramData或者当前账户的AppData等目录中。
同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专区上面找到。
一则是给你的程序假如manifest文件,并且要求这个exe一定要先弹出UAC且用户接收后才可以执行,这样就可以保证总是有足够权限。有点类似Windows自带的注册表编辑器。
另一则是将需要提升权限的部分独立到一个COM工程中,这样在主程序调用这个COM的时候弹出UAC临时提升权限,若用户拒绝提升,也可以很从容的自定义报个错误来。
像我上面回复的,这些都可以在MSDN的Vista专区上面找到。
#9
我找了下 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
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