c# - 需要UAC protected 资源的完整列表才能以标准用户身份运行我的应用程序(未提升)

标签 c# .net windows vb6 uac

关于将我的vb6应用程序升级为以标准用户身份运行,而不是总是要求提升权限,我发现很难找出需要更改的vb6旧版应用程序(exe)的所有位。
目前,我对uac所指的“受保护资源”的理解如下:
在注册表中,您不能访问hk_local machine(本地计算机),必须使用hk_currentuser,因为hk localmachine需要提升的权限,而currentuser不需要。
在“文件和文件夹”部分中,我知道我无法访问windows目录(c:\ windows)或其任何子文件夹,因为这包括程序文件目录(c:\程序文件)是受保护的资源,需要提升,因此,我们将使用不需要提升的programdata文件夹。
另外,我认为有些程序需要提升才能运行,比如事件查看器?是否有需要提升才能运行的所有程序的列表?在cmd.exe控制台中运行的程序呢?
现在,我甚至不确定“受保护的资源”这个词的用法是否正确,因为当我在google上进行几种不同类型的搜索时,我找不到其他我不知道的受保护的资源。基本上,我需要知道所有其他“受保护的资源”是什么,以便我知道我的vb6应用程序的哪些部分需要更改,以便我负责任地在用户计算机上运行我的应用程序(不需要提升)。
因为我在vista和更高版本中找不到受uac限制的所有受保护资源的列表,所以我不知道vb6 exe的哪些部分需要更改。这基本上是我的问题。目前,我只知道需要更改上面列出的项目:在注册表中,使用currentuser而不是localmachine,在文件系统中,使用programdata而不是%windir%和%programfiles%。所有被列入黑名单的目录是什么?
基本上,在google上搜索所有受保护资源的列表并没有返回任何内容,能不能有人指引我到某个站点,在那里我可以得到所有需要提升才能工作的项目的综合列表?这样,我可以在重新编码vb6 exe时使用其他方法,这样人们就可以运行我的应用程序,而不必授予它管理权限?
此外,在vista、windows 7和windows 8/8.1之间,这些“受保护的资源”如有必要或您认为合适,我知道的越多越好。
另外,我不可能重新测试应用程序的每个部分,以查看它是否停止工作,因为应用程序有太多不同的部分,并且有20000行代码。我需要一个文件,概述这一点,以便我可以在那里,改变什么需要改变,而不是试图做试验和错误。
非常感谢!
更新/编辑/摘要:
以下是一些我会觉得有用的东西。我知道有四(4)个类别包含受保护的资源,它们是:注册表、文件系统文件夹、安装了windows和windows api的应用程序。
1)。如果有其他类别可能包含受保护的资源,请随时列出它们。
2)。受保护注册表对象的注册表项列表,需要提升才能访问。
3)。受保护文件夹的列表,需要提升才能访问。
4)。受保护且需要提升才能运行的Windows应用程序的列表。
5)。受保护且需要提升才能使用的Windows API的列表。

最佳答案

当应用程序在正常的lua环境中运行时,您通常只能完全访问该用户的配置文件。
这包括:
他们的个人资料文件夹:C:\Users\[username]\
他们的注册表配置单元:HKEY_CURRENT_USER
通过扩展,任何仅适用于该用户的设置或更改都可以在不提升的情况下进行。
除此之外的任何内容都不是没有访问权限就是只读的,包括(但不限于):
全局设置
系统注册表配置单元:HKEY_LOCAL_MACHINE
系统文件夹:C:\Windows\C:\Program Files\C:\ProgramData\(除非明确允许)
其他用户的配置文件
原始硬件访问
隔壁的狗
核导弹发射代码
进一步阅读:
Windows Vista Application Development Requirements for User Account Control (UAC)
Windows Vista Application Development Requirements for User Account Control Compatibility(一篇较长的文章)

关于c# - 需要UAC protected 资源的完整列表才能以标准用户身份运行我的应用程序(未提升),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25420954/

相关文章:

c# - 字符串插值中可避免的装箱

c# - 从 wcf 服务中的类继承

.net - EF 有订购的集合吗?相当于 NHibernate Bag Vs Set Vs List 世界中的 list

python - Pyqt Wheel 事件

c# - 如何使用 C# 和 XmlDocument 多次 AppendChild?

c# - 将对象转换为正确的类型

c# - 如何在 C# 中调用 Web 服务方法

c# - 在非焦点 ToolStripItem 上显示工具提示

windows - 我将如何在 Powershell 中的每个循环中保存我的凭据

windows - 无法为 OpenAM 实现安装 Apache Web 代理