AppID 密钥
将一个或多个 DCOM 对象的配置选项分组到注册表中的一个集中位置。 由同一可执行文件托管的 DCOM 对象会被分组为一个 AppID,以简化对常用安全和配置设置的管理。
注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{AppID_GUID}
注册表值 | 说明 |
---|---|
AccessPermission | 描述可访问此类实例的主体的访问控制列表 (ACL)。 只有不调用 CoInitializeSecurity 的应用程序才会使用此 ACL。 |
ActivateAtStorage | 配置客户端在与所使用的持久状态相同的计算机上实例化对象或初始化对象。 |
AppID | 标识与已命名可执行文件相对应的 AppID GUID。 |
AppIDFlags | 配置配置为作为“交互式用户”运行的 COM 服务器在非默认桌面上被客户端启动或绑定的方式。 |
AuthenticationLevel | 为未调用 CoInitializeSecurity 的应用程序或为调用 CoInitializeSecurity 并指定 AppID 的应用程序设置身份验证级别。 |
DllSurrogate | 允许 DLL 服务器在代理项进程中运行。 如果指定的是空字符串,则使用系统提供的代理;否则,该值会指定要使用的代理的路径。 |
DllSurrogateExecutable | 允许 DLL 服务器与 DllSurrogate 注册表值一起在自定义代理项进程中运行。 |
端点 | 配置 COM 应用程序以使用指定的 TCP 端口号进行 DCOM 通信。 |
LaunchPermission | 描述可为此类启动新服务器的主体的访问控制列表 (ACL)。 |
LoadUserSettings | 确定 COM 是否为以启动用户应用程序身份运行的 COM 服务器加载用户配置文件。 |
LocalService | 将对象安装为服务应用程序。 |
PreferredServerBitness | 设置 COM 服务器的首选体系结构(32 位或 64 位)。 |
RemoteServerName | 配置客户端在调用未指定 COSERVERINFO 结构的激活函数时,要求在特定计算机上运行对象。 |
ROTFlags | 控制 COM 服务器在运行对象表 (ROT) 中的注册。 |
运行方式 | 配置一个类,使其在被远程客户端激活时在特定用户帐户下运行,而无需作为服务应用程序编写。 |
ServiceParameters | 指定通过 LocalService 注册表值传递给 COM 安装使用的对象的命令行参数。 |
SRPTrustLevel | 设置应用程序的软件限制策略 (SRP) 信任级别。 |
注解
AppID 通过两种不同的机制映射到可执行文件和类:
- 使用可识别 AppID 密钥的 128 位全球唯一标识符 (GUID)。 一个类会在 CLSID 键下的命名值“AppID”中显示其对应的 AppID。 此映射在激活期间使用。
- 使用表示可执行程序名称的命名值(如“MYOLDAPP.EXE”)。 此命名值的类型为 REG_SZ,包含与可执行文件相关联的 AppID 的字符串表示。 此映射用于获取默认访问权限和身份验证级别。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes 密钥对应HKEY_CLASSES_ROOT 密钥,该密钥保留用于与早期版本的 COM 兼容。
对于 COM 服务器,映射通常在注册过程中或运行 dcomcnfg.exe 时生成并写入注册表。 但是,希望使用 AppID 键来设置安全性的 COM 客户端必须创建适当的注册表键值,并通过调用 registry functions 或使用 Regedit.exe 来指定所需的映射。 然后可以为客户端设置 AccessPermission 或 AuthenticationLevel。 例如,假设客户端进程的可执行文件名为“YourClient.exe”,而你希望将身份验证级别设置为“无”。 可以使用 Guidgen.exe 或 Uuidgen.exe 来创建 GUID,作为可执行文件的 AppID。 然后在注册表中设置如下示例所示的值,其中 00000001 表示身份验证级别为“无”:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{MyGuid}
AuthenticationLevel = 00000001
MyClient.exe
AppID = {MyGUID}