现在程序要在win7下操作注册表
除非点右键“run as administrator”运行程序,操作才能成功
一般直接点运行,操作会失败,而且没有任何提示。现在能不能让程序直接以管理员运行,毕竟不能让用户每次都选“run as administrator”
或者像vista那样,第一次运行的时候,弹出要提高权限的对话框也可以。关键是要OS做出提高权限的动作。非常感谢

解决方案 »

  1.   

    在你的程序中嵌入Manifest文件
      

  2.   

    嵌入过了,不起作用啊是win7啊
      

  3.   

    必须这样,如果你要达到不出现run as administrator,除非你给他做显式的权限升级,在核心编程里面有代码
      

  4.   

    修改UAC就可以,Control Panel的用户账户管理中,设置到最低,重启机器
      

  5.   

    怎么不起作用,我用的就是Win7
      

  6.   

    或者使用Runas.exe 启动你的程序试试看
      

  7.   

    VISTA系统下可以关闭uca 不知道win7行不行
      

  8.   


    ok,现在我清单文件加成功了。我测试了一下,在win7下运行,会弹出提升权限的一个对话框,然后运行也是ok的。但是有没有什么办法,不用弹出弹出对话框也能提升权限。毕竟每次都弹对话框,对用户不友好
      

  9.   

    关掉或降低UAC
    使用Runas.exe 启动你的程序。
    将文件名最后加上Setup字样。(这个不知道现在还行不行得通)
      

  10.   

    非常感谢你的建议
    但是 
    1 关掉或降低UAC
      我们不能要求用户关掉UAC
    2 使用Runas.exe 启动你的程序。
       你说的是runas菜单?这样也不能每次要求用户这样做吧?
       如果说的是在程序中,用runas来运行我们的进程的话,那本身要求runas进程就是administrator的。这又是一个悖论。
    3 将文件名最后加上Setup字样
       这个我试过,是可以的。但是应用程序名称已经定了,给用户的不好加个setup,update之类的东西还有其它办法吗?
      

  11.   

    没有
    UAC开着的时候,不经用户同意也能提升权限的话,就是权限提升漏洞了。UAC就是设计来让用户而不是随便什么程序来决定一个进程有什么权限。
      

  12.   

    看来你不知道什么是RunAs.exe,唉...如果以标准用户身份登录,则您还可以使用“以管理员身份运行”命令以其他用户身份运行程序,即使该用户没有管理员帐户。若要执行此操作,请单击“以管理员身份运行”,然后选择该用户帐户。如果以管理员身份登录,则需要以其他用户身份运行程序时,将需要在“命令提示符”窗口中键入 runas.exe /user name。   RUNAS 用法:   RUNAS [ [/noprofile /profile] [/env] [/savecred /netonly] ]   /user:< UserName> program   RUNAS [ [/noprofile /profile] [/env] [/savecred] ]   /smartcard [/user:< UserName>] program   RUNAS /trustlevel:< TrustLevel> program   /noprofile 指定不应该加载用户的配置文件。   这会加速应用程序加载,但   可能会造成一些应用程序运行不正常。   /profile 指定应该加载用户的配置文件。   这是默认值。   /env 要使用当前环境,而不是用户的环境。   /netonly 只在指定的凭据限于远程访问的情况下才使用。   /savecred 用用户以前保存的凭据。   Windows Vista Home 或 Windows Vista Starter 版本上没有这个   选项。   该选项会被忽略。   /smartcard 如果a凭据是智能卡提供的,则使用这个选项。   /user < UserName> 应使用 USER@DOMAIN或 DOMAIN\USER 形式   /showtrustlevels 显示可以用作 /trustlevel 的参数的   信任级别。   /trustlevel < Level> 应该是在 /showtrustlevels 中枚举   的一个级别。   program EXE 的命令行。请参阅下面的例子   例如:   > runas /noprofile /user:mymachine\administrator cmd   > runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"   > runas /env /user:[email protected] "notepad "my file.txt""   Vista之家提示:注意: 只在得到提示时才输入用户的密码。   注意: /profile 跟 /netonly 不兼容。   注意: /savecred 跟 /smartcard 不兼容。 
      

  13.   

    就像jiangsheng说的,你绕过UAC,系统不就得打补丁了?成漏洞了
      

  14.   

    嗯,目前我用 service/ap 架构。AP 负责 UI 和 User 交互。Normal 权限运行。
    Service 在背后悄悄地,admin 权限运行。AP/Service 互相狼狈下,效果不错。
      

  15.   

    结贴吧,啥也别说了。累。UAC对于傻瓜化啥也不懂的用户,上网中病毒的几率不是个降低的福音吗?
      

  16.   


    哈?还有这一说?我认为UAC对啥也不懂的用户根本就没用。他们才不管什么,是询问就点确定。