我用Environment.SetEnvironmentVariable(variable, value, EnvironmentVariableTarget.Process);设置的
在xp环境下用的很好,到了vista下面就抱错了,说是没有权限,请问哪里修改设置的权限?

解决方案 »

  1.   

    最简单的方法...
    在vista里关了uac
      

  2.   

    Vista要进行权限判断,默认是非管理员权限的。
      

  3.   

    最好的方法:
    不用Environment.SetEnvironmentVariable等需要特权的调用。其他的方法:
    如果一定要用,在VS 2008可以直接添加一个manifest,然后使用下面的选项:
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    这样程序就会显示UAC盾牌,用户在双击运行就会被要求提升权限。在VS 2005中如何添加manifest稍稍麻烦一些,google后就知道作法了。当一个程序运行后,它是没有本法通过自身的代码(不包括内嵌管理员账号/密码的方式)来提升自己的。逻辑很简单,如果你能通过代码提升自己,那么恶意代码也很愿意提升自己。
      

  4.   

    XP也能用。进程间通讯还包括
    HKCU注册表+命名事件(同属于一个用户下的进程间*简单*通讯)
    Socket(扩展性最好)
    数据库
    命名管道
    ...