本模块提供设备账号管理能力，包括禁止创建本地账号等。

说明

本模块首批接口从API version 12开始支持。后续版本的新增接口，采用上角标单独标记接口的起始版本。

本模块接口仅可在Stage模型下使用。

本模块接口仅对设备管理应用开放，且调用接口前需激活设备管理应用，具体请参考[MDM Kit开发指南](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/mdm-kit-guide)。

## 导入模块

PhonePC/2in1Tablet



```
1. import { accountManager } from '@kit.MDMKit';
```

## accountManager.disallowOsAccountAddition

PhonePC/2in1Tablet

disallowOsAccountAddition(admin: Want, disallow: boolean, accountId?: number): void

禁止用户添加账号。

**需要权限：** ohos.permission.ENTERPRISE\_SET\_ACCOUNT\_POLICY

**系统能力：** SystemCapability.Customization.EnterpriseDeviceManager

**模型约束：** 此接口仅可在Stage模型下使用。

**冲突规则：** [从严管控](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/mdm-kit-multi-mdm#规则1从严管控)。

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| admin | [Want](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-want) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
| disallow | boolean | 是 | 是否禁止创建本地账号，true表示禁止创建，false表示允许创建。 |
| accountId | number | 否 | 用户ID，指定具体用户。当不传入此参数时，表示禁止所有用户添加账号；当传入此参数时，表示禁止指定用户添加账号。取值范围：大于等于0。  accountId可以通过[getOsAccountLocalId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#getosaccountlocalid9)等接口来获取。 |

**错误码**：

以下错误码的详细介绍请参见[企业设备管理错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-enterprisedevicemanager)和[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { accountManager } from '@kit.MDMKit';
2. import { Want } from '@kit.AbilityKit';

4. let wantTemp: Want = {
5. // 需根据实际情况进行替换
6. bundleName: 'com.example.myapplication',
7. abilityName: 'EnterpriseAdminAbility'
8. };

10. try {
11. // 参数需根据实际情况进行替换
12. accountManager.disallowOsAccountAddition(wantTemp, true, 100);
13. console.info('Succeeded in disallowing os account addition.');
14. } catch (err) {
15. console.error(`Failed to disallow os account addition. Code: ${err.code}, message: ${err.message}`);
16. }
```

## accountManager.isOsAccountAdditionDisallowed

PhonePC/2in1Tablet

isOsAccountAdditionDisallowed(admin: Want, accountId?: number): boolean

查询是否禁止用户添加账号。

**需要权限：** ohos.permission.ENTERPRISE\_SET\_ACCOUNT\_POLICY

**系统能力：** SystemCapability.Customization.EnterpriseDeviceManager

**模型约束：** 此接口仅可在Stage模型下使用。

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| admin | [Want](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-want) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
| accountId | number | 否 | 用户ID，指定具体用户。当不传入此参数时，表示查询所有用户是否禁止添加账号；当传入此参数时，表示查询指定用户是否禁止添加账号。取值范围：大于等于0。  accountId可以通过[getOsAccountLocalId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#getosaccountlocalid9)等接口来获取。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回true表示禁止添加账号。  返回false表示允许添加账号。 |

**错误码**：

以下错误码的详细介绍请参见[企业设备管理错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-enterprisedevicemanager)和[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { accountManager } from '@kit.MDMKit';
2. import { Want } from '@kit.AbilityKit';

4. let wantTemp: Want = {
5. // 需根据实际情况进行替换
6. bundleName: 'com.example.myapplication',
7. abilityName: 'EnterpriseAdminAbility'
8. };

10. try {
11. // 参数需根据实际情况进行替换
12. let isDisallowed: boolean = accountManager.isOsAccountAdditionDisallowed(wantTemp, 100);
13. console.info(`Succeeded in querying the os account addition or not: ${isDisallowed}`);
14. } catch (err) {
15. console.error(`Failed to query the os account addition or not. Code: ${err.code}, message: ${err.message}`);
16. }
```

## accountManager.addOsAccountAsync

PhonePC/2in1Tablet

addOsAccountAsync(admin: Want, name: string, type: osAccount.OsAccountType): Promise<osAccount.OsAccountInfo>

后台添加账号。使用Promise异步回调。

说明

该接口比较耗时，当调用此接口后，后续如果在应用主线程调用其他同步接口时需要等待该接口异步返回。

**需要权限：** ohos.permission.ENTERPRISE\_SET\_ACCOUNT\_POLICY

**系统能力：** SystemCapability.Customization.EnterpriseDeviceManager

**模型约束：** 此接口仅可在Stage模型下使用。

**冲突规则：** [配置](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/mdm-kit-multi-mdm#规则3配置)。

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| admin | [Want](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-want) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
| name | string | 是 | 账号名，指要添加的账号的名称。无法创建同名、名称为空的账号，创建同名账号时会报错误码9201003，创建名称为空的账号时会报错误码401。 |
| type | [osAccount.OsAccountType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#osaccounttype) | 是 | 要添加的账号的类型。  取值范围：ADMIN、NORMAL、GUEST。  · ADMIN：管理员账号。  · NORMAL：普通账号。  · GUEST：访客账号。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| Promise<[osAccount.OsAccountInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#osaccountinfo)> | Promise对象，返回添加的账号信息。 |

**错误码**：

以下错误码的详细介绍请参见[企业设备管理错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-enterprisedevicemanager)和[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 9201003 | Failed to add an OS account. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |

**示例**：



```
1. import { accountManager } from '@kit.MDMKit';
2. import { Want } from '@kit.AbilityKit';
3. import { BusinessError, osAccount } from '@kit.BasicServicesKit';

5. let wantTemp: Want = {
6. // 需根据实际情况进行替换
7. bundleName: 'com.example.myapplication',
8. abilityName: 'EnterpriseAdminAbility'
9. };

11. // 参数需根据实际情况进行替换
12. accountManager.addOsAccountAsync(wantTemp, "TestAccountName", osAccount.OsAccountType.NORMAL).then((info) => {
13. console.info(`Succeeded in creating os account: ${JSON.stringify(info)}`);
14. }).catch((err: BusinessError) => {
15. console.error(`Failed to create os account. Code: ${err.code}, message: ${err.message}`);
16. });
```

## accountManager.setDomainAccountPolicy19+

PhonePC/2in1Tablet

setDomainAccountPolicy(admin: Want, domainAccountInfo: osAccount.DomainAccountInfo, policy: DomainAccountPolicy): void

设置域账号策略。

**需要权限：** ohos.permission.ENTERPRISE\_SET\_ACCOUNT\_POLICY

**系统能力：** SystemCapability.Customization.EnterpriseDeviceManager

**设备行为差异：** 该接口在PC/2in1设备中可正常调用，在其他设备中返回801错误码。

**模型约束：** 此接口仅可在Stage模型下使用。

**冲突规则：** [从严管控](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/mdm-kit-multi-mdm#规则1从严管控)。

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| admin | [Want](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-want) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
| domainAccountInfo | [osAccount.DomainAccountInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#domainaccountinfo8) | 是 | 域账号信息。  若传入的domainAccountInfo内部属性均为空，则会设置为全局域账号策略。全局策略对所有的域账号生效。  若传入的domainAccountInfo内部属性不为空，则为指定域账号设置策略。  指定域账号策略的优先级高于全局策略，若指定域账号已有域账号策略，则全局策略对其不生效。  **说明**：若为指定域账号设置策略，DomainAccountInfo的serverConfigId字段必填。 |
| policy | [DomainAccountPolicy](/consumer/cn/doc/harmonyos-references/js-apis-enterprise-accountmanager#domainaccountpolicy19) | 是 | 域账号策略。  **说明**：设置域账号策略后须在设备侧修改域账号密码，若未修改密码，则DomainAccountPolicy中的passwordValidityPeriod、passwordExpirationNotification配置不生效。 |

**错误码**：

以下错误码的详细介绍请参见[企业设备管理错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-enterprisedevicemanager)和[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |

**示例：**



```
1. import { accountManager } from '@kit.MDMKit';
2. import { Want } from '@kit.AbilityKit';
3. import { BusinessError, osAccount } from '@kit.BasicServicesKit';

5. async function setDomainAccountPolicy() {
6. let wantTemp: Want = {
7. // 需根据实际情况进行替换
8. bundleName: 'com.example.myapplication',
9. abilityName: 'EnterpriseAdminAbility'
10. };
11. let policy: accountManager.DomainAccountPolicy = {
12. // 需根据实际情况进行替换
13. authenticationValidityPeriod: 300,
14. passwordValidityPeriod: 420,
15. passwordExpirationNotification: 60
16. };
17. // 设置全局域账号策略
18. let accountInfo: osAccount.DomainAccountInfo = {
19. domain: '',
20. accountName: '',
21. serverConfigId: ''
22. };
23. try {
24. accountManager.setDomainAccountPolicy(wantTemp, accountInfo, policy);
25. console.info('Succeeded in setting global domainAccount policy.');
26. } catch (err) {
27. console.error(`Failed to set domainAccount policy. Code: ${err.code}, message: ${err.message}`);
28. }
29. // 设置指定域账号策略
30. let accountInfo2: osAccount.DomainAccountInfo = {
31. domain: '',
32. accountName: '',
33. serverConfigId: ''
34. };
35. // 需根据实际情况替换
36. let userId: number = 100;
37. await osAccount.getAccountManager().getOsAccountDomainInfo(userId)
38. .then((domainAccountInfo: osAccount.DomainAccountInfo) => {
39. accountInfo2 = domainAccountInfo;
40. }).catch((err: BusinessError) => {
41. console.error(`Failed to get account domain info. Code: ${err.code}, message: ${err.message}`);
42. })
43. try {
44. accountManager.setDomainAccountPolicy(wantTemp, accountInfo2, policy);
45. console.info('Succeeded in setting domain account policy.');
46. } catch (err) {
47. console.error(`Failed to set domain account policy. Code: ${err.code}, message: ${err.message}`);
48. }
49. }
```

## accountManager.getDomainAccountPolicy19+

PhonePC/2in1Tablet

getDomainAccountPolicy(admin: Want, domainAccountInfo: osAccount.DomainAccountInfo): DomainAccountPolicy

获取域账号策略。

**需要权限：** ohos.permission.ENTERPRISE\_SET\_ACCOUNT\_POLICY

**系统能力：** SystemCapability.Customization.EnterpriseDeviceManager

**设备行为差异：** 该接口在PC/2in1设备中可正常调用，在其他设备中返回801错误码。

**模型约束：** 此接口仅可在Stage模型下使用。

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| admin | [Want](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-want) | 是 | 企业设备管理扩展组件。Want中必须包含企业设备管理扩展能力的abilityName和所在应用的bundleName。 |
| domainAccountInfo | [osAccount.DomainAccountInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#domainaccountinfo8) | 是 | 域账号信息。  若传入的domainAccountInfo内部属性均为空，则查询全局域账号策略。  若传入的domainAccountInfo内部属性不为空，则查询指定域账号策略。  **说明**：若查询指定域账号策略，DomainAccountInfo的serverConfigId字段必填。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| [DomainAccountPolicy](/consumer/cn/doc/harmonyos-references/js-apis-enterprise-accountmanager#domainaccountpolicy19) | 域账号策略。 |

**错误码**：

以下错误码的详细介绍请参见[企业设备管理错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-enterprisedevicemanager)和[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 9200001 | The application is not an administrator application of the device. |
| 9200002 | The administrator application does not have permission to manage the device. |
| 201 | Permission verification failed. The application does not have the permission required to call the API. |
| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |

**示例：**



```
1. import { accountManager } from '@kit.MDMKit';
2. import { Want } from '@kit.AbilityKit';
3. import { BusinessError, osAccount } from '@kit.BasicServicesKit';

5. async function getDomainAccountPolicy() {
6. let wantTemp: Want = {
7. // 需根据实际情况进行替换
8. bundleName: 'com.example.myapplication',
9. abilityName: 'EnterpriseAdminAbility'
10. };
11. let domainAccountPolicy: accountManager.DomainAccountPolicy = {};
12. // 查询全局域账号策略
13. let accountInfo: osAccount.DomainAccountInfo = {
14. domain: '',
15. accountName: '',
16. serverConfigId: ''
17. };
18. try {
19. domainAccountPolicy = accountManager.getDomainAccountPolicy(wantTemp, accountInfo);
20. console.info('Succeeded in getting global domain account policy.');
21. } catch (err) {
22. console.error(`Failed to get domain account policy. Code: ${err.code}, message: ${err.message}`);
23. }
24. // 查询指定域账号策略
25. let accountInfo2: osAccount.DomainAccountInfo = {
26. domain: '',
27. accountName: '',
28. serverConfigId: ''
29. };
30. // 需根据实际情况进行替换
31. let userId: number = 100;
32. await osAccount.getAccountManager()
33. .getOsAccountDomainInfo(userId)
34. .then((domainAccountInfo: osAccount.DomainAccountInfo) => {
35. accountInfo2 = domainAccountInfo;
36. })
37. .catch((err: BusinessError) => {
38. console.error(`Failed to get account domain info. Code: ${err.code}, message: ${err.message}`);
39. })
40. try {
41. domainAccountPolicy = accountManager.getDomainAccountPolicy(wantTemp, accountInfo2);
42. console.info('Succeeded in getting domain account policy.');
43. } catch (err) {
44. console.error(`Failed to get domain account policy. Code: ${err.code}, message: ${err.message}`);
45. }
46. }
```

## DomainAccountPolicy19+

PhonePC/2in1Tablet

域账号策略。

**系统能力：** SystemCapability.Customization.EnterpriseDeviceManager

展开

| 名称 | 类型 | 只读 | 可选 | 说明 |
| --- | --- | --- | --- | --- |
| authenticationValidityPeriod | number | 否 | 是 | 表示域账号认证Token的有效期（单位：s），取值范围是[-1,2147483647]。有效期起始时间为最后一次域账号的认证时间点，如登录、锁屏后解锁等。  默认值为-1，表示Token永久有效。取值为0，表示Token立即失效。Token过期/失效后，用户进入系统时必须进行域账号认证，验证域账号和密码。 |
| passwordValidityPeriod | number | 否 | 是 | 表示域账号密码有效期（单位：s），取值范围是[-1,2147483647]，有效期起始时间为设备侧最后一次修改密码的时间点。  默认值为-1，表示域账号密码永久有效。 |
| passwordExpirationNotification | number | 否 | 是 | 表示域账号密码过期前提示时间（单位：s），取值范围是[0,2147483647]。  默认值为0，表示域账号密码过期不提示。  **说明**：passwordExpirationNotification需与passwordValidityPeriod配合使用，当系统时间大于或等于（设备侧最后一次修改域账号密码时间 + passwordValidityPeriod - passwordExpirationNotification）时，会发页面通知提示密码即将过期。 |