我有一个应用程序在执行时会修改 Windows 注册表。使用管理员权限,该应用程序可以正常执行(没有问题),但每当普通用户执行该应用程序时,都会出现一个对话框,其中包含以下消息
无法更新系统注册表。请尝试使用 REGIDIT。
单击“确定”按钮后,应用程序成功执行。但我想删除此消息。
问题显然出在权限上。
该应用程序只是独立的可执行文件。
有人能提出解决方案吗?
答案1
对于 Windows 7:如果您的应用程序需要管理员权限才能运行并且您信任它,请修改可执行文件的属性以始终以管理员身份执行。IRC,右键单击可执行文件,选项位于“兼容性”选项卡的底部。- 还要检查是否有更新版本的应用程序可以正确处理 UAC 并可以作为普通用户运行。
对于 Windows XP:RunAs 实用程序可用于以其他权限启动某些程序,您可以在此获取更多信息:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/runas.mspx?mfr=true
答案2
使用Sysinternals 进程监视器查看应用程序尝试访问注册表中的位置(作为普通用户)。
为进程名称设置一个过滤器并仅监视注册表活动(禁用网络、文件等......)
然后查找“访问被拒绝”消息(在结果列中)并为这些注册表位置设置权限。
请小心....