代码之家  ›  专栏  ›  技术社区  ›  P a u l

Win7-64 C开发的注册表权限问题

  •  0
  • P a u l  · 技术社区  · 16 年前

    vs2008,c:我的winforms应用程序第一次运行时,需要在hklm\software中创建一个设置。显然是权限问题,但要求用户可能没有管理权限,并且最终用户不可能手动设置注册表权限。我可以在安装过程中创建密钥,但有没有办法从程序中创建密钥?

    registry key key=registry.localmachine.createSubkey(@“software\mycompany\myapp 1.0”);

    仅测试VS2008中的应用程序会出现以下错误: 拒绝访问注册表项“hkey_local_machine\software\mycompany\myapp”。

    如果我作为管理运行它没有错误。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Darin Dimitrov    16 年前

    从程序执行此操作的唯一方法是在具有足够权限的帐户下执行写入注册表的代码。你可以看看这个 article 它给出了一个模拟用户的例子。有一些安全措施 considerations 考虑到这个方法,所以最好的方法是在程序安装期间执行这个操作。

        2
  •  1
  •   Alex K.    14 年前

    这是win7的uac。如果要访问注册表项,则必须在清单中设置程序需要管理员权限或轻松删除此项。所以你可以写

      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />        
          </requestedPrivileges>
        </security>
      </trustInfo>
    
    for admin rights into the app.manifest in your properties folder or you write
    
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
          </requestedPrivileges>
        </security>
      </trustInfo>
    

    如果你不想使用管理权限。