객체 관리자(Object Manager, 내부적으로 Ob로 사용)는 마이크로소프트 윈도우 NT 아키텍처의 한 구성 요소로, 운영체제의 자원을 관리하는 하위 시스템이다. 윈도우 NT Executive의 일부로 구현되어 있으며, 프로세스에 할당된 모든 자원을 객체 형태로 추적하고 관리하는 집중된 자원 중개인 역할을 수행한다.
객체 관리자가 관리하는 자원은 물리적 장치, 파일이나 폴더, 실행 중인 프로세스, 윈도우 레지스트리 키 등 다양하다. 이러한 자원들은 각각 논리적 객체로 표면화되며, 범주화를 위해 이름 공간(Namespace) 안에 상주한다. 모든 객체는 자원의 종류를 나타내는 Object Type 속성과 메타데이터를 가진다. 자원을 처리하는 모든 하위 시스템은 객체 관리자를 통해야 하며, 객체 관리자는 공유된 자원으로서 동작한다.
객체 관리자는 참조 횟수 계산 방식을 통해 어떤 객체들이 현재 사용되고 있는지와 소유자 정보에 대한 기록을 유지한다. 객체가 생성되거나 열릴 때마다 핸들(handle)이라고 하는 인스턴스 참조가 생성된다. 객체 관리자는 이름과 핸들을 통해 객체들의 색인을 만드는데, 이름 변환 과정이 생략되므로 핸들을 통한 참조가 더 빠르다. 핸들은 프로세스들에 의해 소유되며 프로세스들 사이에 넘겨질 수 있다.
객체 관리자에 의해 관리되는 각 객체는 헤더(header)와 바디(body)로 구성된다. 헤더는 객체 관리자가 사용하는 상태 정보(객체 이름, 객체 디렉터리, 보안 설명자, 할당량, 열린 핸들 수, 참조 횟수, 타입 등)를 가지며, 바디는 객체별 데이터와 노출하는 서비스에 대한 정보를 가진다.
객체는 커널 객체(Kernel Object) 또는 Executive 객체(Executive Object)일 수 있다. 커널 객체는 물리 장치나 서비스, 동기화 같은 OS 서비스를 구현하는 기본형 자원을 표현하며 사용자 모드 코드에 노출되지 않는다. Executive 객체는 하나 이상의 커널 객체를 캡슐화하며, 응용 프로그램과 서비스가 커널 외부에서 이용할 수 있도록 노출된다. Executive 객체의 유형으로는 프로세스, 스레드, 잡(Job), 파일, 파일 매핑 객체, 접근 토큰, 이벤트, 세마포어/뮤텍스, 타이머, 레지스트리 키, 데스크톱, 클립보드, 윈도우 스테이션, 심볼릭 링크 등이 있다.
객체 디렉터리는 타입별로 범주화하기 위해 사용되며, 미리 정의된 디렉터리로는 ??(장치 이름), \BaseNamedObjects(뮤텍스, 이벤트, 세마포어 등), \Callback, \Device, \Drivers, \FileSystem, \KnownDlls, \Nls(언어 테이블), \ObjectTypes, \RPC Controls, \Security, \Window 등이 있다. 각 사용자 세션에는 다른 이름 공간이 배정되며, 모든 세션 간 공유 객체는 GLOBAL 이름 공간에, 세션별 객체는 특정 세션 이름 공간에 존재한다.
객체 관리자의 동작을 확인하고 디버깅하기 위한 도구로는 마이크로소프트 Sysinternals에서 제공하는 WinObj가 있으며, 이는 NT 객체 관리자의 이름 공간에 접근하여 정보를 표시하는 프로그램이다.