管理中心

进程访问限制

从API版本6.0.1(21)开始,支持应用配置系统服务进程对后台用户数据的访问控制。

场景介绍

Enterprise Space Kit支持应用设置系统服务进程不可访问后台用户数据的能力,同时支持获取系统服务进程管控不可访问后台用户数据的状态。另外,支持应用提供获取、新增和删除不可访问后台用户数据的系统服务进程列表的能力。

接口说明

详细接口说明可参考接口文档。

展开
接口名 描述
setRestrictedAccessBackgroundUserdata(userData: UserDataEnum, enable: boolean): Promise<void> 设置系统服务进程不可访问后台用户数据。
getRestrictedAccessBackgroundUserdataStatus(userData: UserDataEnum): Promise<boolean> 获取系统服务进程管控不可访问后台用户数据的状态。
getRestrictedAccessBackgroundUserdataProcessList(userData: UserDataEnum): Promise<ProcessConfigInfo[]> 获取不可访问后台用户数据的系统服务进程列表。
addRestrictedAccessBackgroundUserdataProcessList(userData: UserDataEnum, processName: string, disallowPaths?: string[]): Promise<void> 新增系统服务进程不可访问后台用户数据路径列表。
deleteRestrictedAccessBackgroundUserdataProcessList(userData: UserDataEnum, processName: string): Promise<void> 删除系统服务进程不可访问后台用户数据路径列表。

开发步骤

1.导入进程访问限制API模块相关依赖。

收起
自动换行
深色代码主题
复制
  1. import { spaceManager } from '@kit.EnterpriseSpaceKit';
  2. import { ErrCode } from '../../common/ErrCode';
  3. import { hilog } from '@kit.PerformanceAnalysisKit';

2.进程访问限制API接口封装。

收起
自动换行
深色代码主题
复制
  1. const TAG = '[Sample_SpaceManagerSample]';
  2. const DOMAIN = 0xF811;
  3. export class RestrictedAccessProcessApi {
  4. static async setRestrictedAccessBackgroundUserdata(
  5. userData: spaceManager.UserDataEnum, enable: boolean): Promise<number> {
  6. try {
  7. await spaceManager.setRestrictedAccessBackgroundUserdata(userData, enable)
  8. hilog.info(DOMAIN, TAG,
  9. `Succeeded in setting restricted access background user data. userData:${userData},enable:${enable}`);
  10. return ErrCode.OK;
  11. } catch (err) {
  12. hilog.error(DOMAIN, TAG,
  13. `Failed to set restricted access background user data. Code:${err.code},message:${err.message}`);
  14. return ErrCode.ERR;
  15. }
  16. }
  17. static async getRestrictedAccessBackgroundUserdataStatus(
  18. userData: spaceManager.UserDataEnum): Promise<boolean | undefined> {
  19. try {
  20. const status: boolean = await spaceManager.getRestrictedAccessBackgroundUserdataStatus(userData);
  21. hilog.info(DOMAIN, TAG, `Succeeded in getting restricted access background user data status. status:${status}`);
  22. return status;
  23. } catch (err) {
  24. hilog.error(DOMAIN, TAG,
  25. `Failed to get restricted access background user data status. Code:${err.code},message:${err.message}`);
  26. return undefined;
  27. }
  28. }
  29. static async getRestrictedAccessBackgroundUserdataProcessList(
  30. userData: spaceManager.UserDataEnum): Promise<spaceManager.ProcessConfigInfo[]> {
  31. try {
  32. let processConfigInfo: spaceManager.ProcessConfigInfo[] =
  33. await spaceManager.getRestrictedAccessBackgroundUserdataProcessList(userData);
  34. hilog.info(DOMAIN, TAG, 'Succeeded in getting restricted access background user data process list.');
  35. return processConfigInfo;
  36. } catch (err) {
  37. hilog.error(DOMAIN, TAG, `Failed to get restricted access background user data process list.
  38. Code:${err.code},message:${err.message}`);
  39. return [];
  40. }
  41. }
  42. static async addRestrictedAccessBackgroundUserdataProcessList(
  43. userData: spaceManager.UserDataEnum, processName: string, disallowPaths: string[]): Promise<number> {
  44. try {
  45. await spaceManager.addRestrictedAccessBackgroundUserdataProcessList(userData, processName, disallowPaths);
  46. hilog.info(DOMAIN, TAG, `Succeeded in adding restricted access background user data process list`);
  47. return ErrCode.OK;
  48. } catch (err) {
  49. hilog.error(DOMAIN, TAG,
  50. `Failed to add restricted access background user data process list.Code:${err.code},message:${err.message}`);
  51. return ErrCode.ERR;
  52. }
  53. }
  54. static async deleteRestrictedAccessBackgroundUserdataProcessList(
  55. userData: spaceManager.UserDataEnum, processName: string): Promise<number> {
  56. try {
  57. await spaceManager.deleteRestrictedAccessBackgroundUserdataProcessList(userData, processName);
  58. hilog.info(DOMAIN, TAG, `Succeeded in deleting restricted access background user data process list`);
  59. return ErrCode.OK;
  60. } catch (err) {
  61. hilog.error(DOMAIN, TAG,
  62. `Failed to delete restricted access background user data process list.Code:${err.code},message:${err.message}`);
  63. return ErrCode.ERR;
  64. }
  65. }
  66. }

3.导入进程访问限制业务实现相关依赖。

收起
自动换行
深色代码主题
复制
  1. import { router } from '@kit.ArkUI';
  2. import { spaceManager } from '@kit.EnterpriseSpaceKit';
  3. import { ErrCode } from '../../common/ErrCode';
  4. import { RestrictedAccessProcessApi } from '../api/RestrictedAccessprocessApi'
  5. import { hilog } from '@kit.PerformanceAnalysisKit';

4.进程访问限制业务相关实现。

收起
自动换行
深色代码主题
复制
  1. const TAG = '[Sample_SpaceManagerSample]';
  2. const DOMAIN = 0xF811;
  3. @Entry
  4. @Component
  5. struct RestrictedAccessProcessPage {
  6. async setRestrictedAccessBackgroundUserdata() {
  7. const userData: spaceManager.UserDataEnum = spaceManager.UserDataEnum.ENTERPRISE;
  8. const enable: boolean = false;
  9. if (await RestrictedAccessProcessApi.setRestrictedAccessBackgroundUserdata(userData, enable) !== ErrCode.OK) {
  10. // 异常处理
  11. hilog.error(DOMAIN, TAG, 'Failed to set restricted access background user data!');
  12. return;
  13. }
  14. // 处理后置逻辑
  15. }
  16. async getRestrictedAccessBackgroundUserdataStatus() {
  17. const userData: spaceManager.UserDataEnum = spaceManager.UserDataEnum.ENTERPRISE;
  18. let enable: boolean | undefined =
  19. await RestrictedAccessProcessApi.getRestrictedAccessBackgroundUserdataStatus(userData);
  20. if (enable === undefined) {
  21. // 异常处理
  22. hilog.error(DOMAIN, TAG, 'Failed to get restricted access background user data status!');
  23. return;
  24. }
  25. // 处理后置逻辑
  26. }
  27. async addRestrictedAccessBackgroundUserdataProcessList() {
  28. const userData: spaceManager.UserDataEnum = spaceManager.UserDataEnum.ENTERPRISE;
  29. const processName: string = 'testSa'; // 限制进程名,由用户传入
  30. const disallowPaths: string[] = ['path']; // 限制访问路径,由用户传入
  31. if (await RestrictedAccessProcessApi.addRestrictedAccessBackgroundUserdataProcessList(
  32. userData, processName, disallowPaths) !== ErrCode.OK) {
  33. // 处理异常逻辑
  34. hilog.error(DOMAIN, TAG, 'Failed to add restricted access background user data process list!');
  35. return;
  36. }
  37. // 处理后置逻辑
  38. }
  39. async getRestrictedAccessBackgroundUserdataProcessList() {
  40. const userData: spaceManager.UserDataEnum = spaceManager.UserDataEnum.ENTERPRISE;
  41. let processConfigInfo: spaceManager.ProcessConfigInfo[] =
  42. await RestrictedAccessProcessApi.getRestrictedAccessBackgroundUserdataProcessList(userData);
  43. // 处理后置逻辑
  44. }
  45. async deleteRestrictedAccessBackgroundUserdataProcessList() {
  46. const userData: spaceManager.UserDataEnum = spaceManager.UserDataEnum.ENTERPRISE;
  47. const processName: string = 'testSa'; // 限制进程名,由用户传入
  48. if (await RestrictedAccessProcessApi.deleteRestrictedAccessBackgroundUserdataProcessList(userData, processName) !==
  49. ErrCode.OK) {
  50. // 处理异常逻辑
  51. hilog.error(DOMAIN, TAG, 'Failed to delete restricted access background user data process list!');
  52. return;
  53. }
  54. // 处理后置逻辑
  55. }
  56. build() {
  57. Column() {
  58. Row() {
  59. Button($r('app.string.setRestrictedAccessBackgroundUserdata'))
  60. .buttonCommonStyle()
  61. .onClick(() => {
  62. this.setRestrictedAccessBackgroundUserdata();
  63. })
  64. }
  65. Row() {
  66. Button($r('app.string.getRestrictedAccessBackgroundUserdataStatus'))
  67. .buttonCommonStyle()
  68. .onClick(() => {
  69. this.getRestrictedAccessBackgroundUserdataStatus();
  70. })
  71. }
  72. Row() {
  73. Button($r('app.string.getRestrictedAccessBackgroundUserdataProcessList'))
  74. .buttonCommonStyle()
  75. .onClick(() => {
  76. this.getRestrictedAccessBackgroundUserdataProcessList();
  77. })
  78. }
  79. Row() {
  80. Button($r('app.string.addRestrictedAccessBackgroundUserdataProcessList'))
  81. .buttonCommonStyle()
  82. .onClick(() => {
  83. this.addRestrictedAccessBackgroundUserdataProcessList();
  84. })
  85. }
  86. Row() {
  87. Button($r('app.string.deleteRestrictedAccessBackgroundUserdataProcessList'))
  88. .buttonCommonStyle()
  89. .onClick(() => {
  90. this.deleteRestrictedAccessBackgroundUserdataProcessList();
  91. })
  92. }
  93. Row() {
  94. Button($r('app.string.back'))
  95. .buttonCommonStyle()
  96. .onClick(() => {
  97. router.back();
  98. })
  99. }
  100. }
  101. }
  102. }
  103. @Extend(Button)
  104. function buttonCommonStyle() {
  105. .width(400)
  106. .height(50)
  107. .backgroundColor('#6366F1')
  108. .fontColor('#FFFFFF')
  109. .fontSize(14)
  110. .margin({ left: 20, bottom: 5 })
  111. }