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来指定所需的映射。 然后可以为客户端设置 AccessPermissionAuthenticationLevel 等值。 例如,假设客户端进程的可执行文件的名称为“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}