前提:操作系统vista/win7,开启UAC打开任务管理器,进程页,在查看菜单->选择列,钩选 用户帐户控制(UAC)虚拟化其中有些进程是停用,有些是启动,有些是不允许(内核程序,系统服务以及右键以管理员身份运行的程序)启用的有:千千静听,UltraEdit 32(10.20a)
停用的有:记事本,firefox,editplus等Delphi 7编出来的普通应用程序,如果不用管理员运行的话,默认是启动UAC虚拟化的
问题:如何让编写出来的程序默认是禁用UAC虚拟化,即让系统认为程序支持UACPS:VS 2008/2010可以在工程选项里设置支持UAC,就不会被虚拟化了

解决方案 »

  1.   

    找到答案了 =.=
    把下面的东西编译进资源就行了
    uac.manifest<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity
        name="naily.pdbm.exe"
        processorArchitecture="x86"
        version="5.1.0.0"
        type="win32"/>
      <description>NAILY Soft</description>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"/>
        </dependentAssembly>
      </dependency>
      <!-- Identify the application security requirements. -->  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel
              level="asInvoker"
              uiAccess="false"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
      

  2.   

    参考《windows Vista下编写安全的代码》
      

  3.   

    还在用d7,也许会遇到。xml编译进资源?怎么做??
      

  4.   

    vista的安全性很高,一般都是將某些特定代碼寫資源中,有本關於vista安全代碼的書,LZ不妨看看
      

  5.   

     name="naily.pdbm.exe"
    http://bbs.csdn.net/topics/350018526
    naily.pdbm.exe 是什么意思,
    我的程序的文件名: test.exe
    是不是要修改成 
    name="test.exe"  呀