Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows权限和uac托管的.NET_.net_Windows_Permissions_Uac_Account - Fatal编程技术网

windows权限和uac托管的.NET

windows权限和uac托管的.NET,.net,windows,permissions,uac,account,.net,Windows,Permissions,Uac,Account,考虑一个.NET托管应用程序。无需特别许可即可向HKCU添加密钥,对吗 无论用户是标准用户还是管理员,都不需要特殊权限设置 如果应用程序尝试向HKLM添加密钥,会发生什么情况?用户是否需要是管理员?UAC提示是否出现?修改HKCU不需要特殊权限,任何用户都可以修改自己的注册表分支 如果您试图修改HKLM,则需要具有管理员权限。如果您是标准用户,RegCreateKey操作将失败1。UAC提示符不会仅仅因为应用程序试图写入受保护的位置而出现 这与您在Windows XP中看到的行为相同。操作将失败

考虑一个.NET托管应用程序。无需特别许可即可向HKCU添加密钥,对吗

无论用户是标准用户还是管理员,都不需要特殊权限设置


如果应用程序尝试向HKLM添加密钥,会发生什么情况?用户是否需要是管理员?UAC提示是否出现?

修改HKCU不需要特殊权限,任何用户都可以修改自己的注册表分支

如果您试图修改HKLM,则需要具有管理员权限。如果您是标准用户,
RegCreateKey
操作将失败1。UAC提示符不会仅仅因为应用程序试图写入受保护的位置而出现

这与您在Windows XP中看到的行为相同。操作将失败,访问被拒绝

如果您的应用程序需要写入HKLM,则您可以:

  • 将应用程序标记为始终以管理员身份运行(错误)
  • 使用
    ShellExecute
    runas动词启动应用程序的副本,以便用户可以临时提升以执行需要管理访问权限的操作(更好)
  • 不写信给HKLM(最佳)
您的申请不应以书面形式提交给HKLM。如果您有需要配置的项目,则应在安装时完成(此时您的安装程序将有权在HKLM中创建密钥)

另一种选择是让应用程序的安装程序安装您需要编写的HKLM分支的安全设置。将完全控制权授予所有人。这样,每个人都可以修改您需要更改的HKLM分支