用C#开发Vista的程序, 在标准用户下运行时某些button 的触发需要提升权限才能响应. 比如像在标准用户下,调整日期和时间会弹出一个 "用户帐户控制的窗口" 让你输入administrator用户的密码,输入正确后才能调整日期和时间.
我想知道的是,产生这个"用户帐户控制的窗口"有没有什么API能够调用, 这样可以让我编写的Vista的应用程序在标准用户下运行时某些button 的触发可以弹出这样的窗口. 
或者其他方法可以达到这样的效果? 谢谢~~~ 

解决方案 »

  1.   

    不需要你编写哪怕一行代码~~~操作系统发现程序的行为需要提升权限时就自动弹出,比如如果你的代码里面点击按钮以后要修改注册表一个全局配置的话,必然你点完那个UAC窗口就出来了~~~ 
    如果你需要做的操作是不需要UAC提权的,而你又需要让它弹出来,有个简单的方式是对你代码中对应得部分用 特性 [Attributes] 声明一个较高的执行权限。不推荐直接调用Vista的UAC相关API来做这件事,一是兼容性差,导致在非Vista系统上出错,二是UAC是允许用户打开关闭的,这样做又有越俎代庖的嫌疑。如果按上面那种方式则在用户关闭UAC时并不弹出,尊重用户的选择。
      

  2.   

    想做出类似Vista那种按钮C#很麻烦,需要用一点COM之类的东西。不用COM的话,可以参考这个文章,http://www.codeproject.com/KB/vista-security/UAC_Shield_for_Elevation.aspx
      

  3.   

    well, 搞定了~ 谢谢诸位, especial lextm and syeerzy
      

  4.   

    还有个问题就是, 还是写不了注册表啊! LocalMachine中的!