AppID 密钥
将一个或多个 DCOM 对象的配置选项分组到注册表中的一个集中位置。 由同一可执行文件托管的 DCOM 对象分为一个 AppID,以简化常见安全和配置设置的管理。
注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{AppID_GUID}
注册表值 | 描述 |
---|---|
AccessPermission | 描述可以访问此类实例的主体的访问控制列表(ACL)。 此 ACL 仅由不调用 CoInitializeSecurity的应用程序使用。 |
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)。 |
RunAs | 将类配置为在远程客户端激活时在特定用户帐户下运行,而无需编写为服务应用程序。 |
ServiceParameters | 指定要通过 LocalService 注册表值传递给 COM 安装的对象的命令行参数。 |
SRPTrustLevel | 设置应用程序的软件限制策略(SRP)信任级别。 |
言论
AppID 使用两种不同的机制映射到可执行文件和类:
- 使用 128 位全局唯一标识符(GUID)来标识 AppID 密钥。 类在命名值“AppID”中的 CLSID 键下指示其对应的 AppID。 此映射在激活期间使用。
- 使用指示可执行名称(如“MYOLDAPP.EXE”)的命名值。 此命名值的类型为 REG_SZ,包含与可执行文件关联的 AppID 的字符串表示形式。 此映射用于获取默认访问权限和身份验证级别。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes 密钥对应于 HKEY_CLASSES_ROOT 密钥,该密钥已保留,以便与早期版本的 COM 兼容。
对于 COM 服务器,映射通常在注册过程中或在运行 dcomcnfg.exe时生成并写入注册表。 但是,想要使用 AppID 键设置安全性的 COM 客户端必须创建适当的注册表项,并通过调用 注册表函数 或使用 Regedit.exe来指定所需的映射。 然后可以为客户端设置 AccessPermission 或 AuthenticationLevel 等值。 例如,假设客户端进程的可执行文件的名称为“YourClient.exe”,并且你想要将身份验证级别设置为“None”。 可以使用 Guidgen.exe 或 Uuidgen.exe 创建 GUID,该 GUID 是可执行文件的 AppID。 然后,在注册表中设置值,如以下示例中所示,其中00000001表示“None”的身份验证级别:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{MyGuid}
AuthenticationLevel = 00000001
MyClient.exe
AppID = {MyGUID}