IsProcessInIsolatedWindowsEnvironment 関数 (isolatedwindowsenvironmentutils.h)

アプリケーションが実行している実行環境 (ホストまたは分離環境) を決定します。

構文

HRESULT IsProcessInIsolatedWindowsEnvironment(
  BOOL *isProcessInIsolatedWindowsEnvironment
);

パラメーター

isProcessInIsolatedWindowsEnvironment

[out]

API の結果を受け取るブール値へのポインター。 このパラメーターは true 、プロセスが分離された Windows 環境 false にある場合は になります。それ以外の場合は になります。

戻り値

関数が S_OK 成功した場合は を返します。 失敗した場合は HRESULT のエラー コードを返します。

注釈

Microsoft Defender Application Guard (MDAG) を使用するアプリケーションでは、実行されている実行環境を見つける機能が必要です。 これは、アプリがユーザー/エンタープライズ データ、ユーザー ID、アプリのビジネス上の関心事を保護するために適切に動作できるようにするために必要です。

次の例は、API を IsProcessInIsolatedWindowsEnvironment 使用してアプリの実行環境を決定する方法を示しています。

#define PrintInfo wprintf

typedef HRESULT (*pIsProcessInIsolatedWindowsEnvironment)
                  (_Out_ BOOL *isProcessInIsolatedWindowsEnvironment);

int PrintError(unsigned int line, HRESULT hr)
{
  wprintf_s(L"ERROR: Line:%d HRESULT: 0x%X\n", line, hr);
  return hr;
}

HRESULT TakeActionAsPerExecutionEnvironment()
{
  //For instance the action could be saving changes to user settings for the app.
  //Lets assume the app has made a design decision to save change to user settings if
  //the app is running on the host, and discard the changes to user settings if they were
  //changed in an Isolated Environment.

  HMODULE dllInstance (LoadLibrary(L"IsolatedWindowsEnvironmentUtils.dll"));

  if (nullptr == dllInstance)
  {
    PrintInfo(L" Cannot load the library IsolatedWindowsEnvironmentUtils.dll \n");
    return E_FAIL;
  }

  auto pfn = reinterpret_cast<pIsProcessInIsolatedWindowsEnvironment>

  (GetProcAddress(dllInstance, "IsProcessInIsolatedWindowsEnvironment"));

  if (nullptr == pfn)
  {
    PrintInfo(L"Function definition IsProcessInIsolatedWindowsEnvironment() is not found.\n");
    FreeLibrary(dllInstance);
    return E_FAIL;
  }

  BOOL isInIsolatedWindowsEnvironment = FALSE;

  HRESULT hr = pfn(&isInIsolatedWindowsEnvironment);

  if (FAILED(hr))
  {
    FreeLibrary(dllInstance);
    return PrintError(__LINE__, hr);
  }

  if (isInIsolatedWindowsEnvironment == TRUE) //app is running in Isolated Environment
  {
    //do not save changes to the app’s user settings in this case
    PrintInfo(L"Discarding changes to app’s user settings.\n");

    //<TO-DO-Start>
    //Add app specific custom logic here
    //<TO-DO-End>
  }
  else
  {
    //Save changes to the app’s user settings in this case
    PrintInfo(L"Saving changes to app’s user settings.\n");

    //<TO-DO-Start>
    //Add app specific custom logic here
    //<TO-DO-End>
  }

  FreeLibrary(dllInstance);
  return S_OK;
}

要件

要件
Header isolatedwindowsenvironmentutils.h
[DLL] isolatedwindowsenvironmentutils.dll

こちらもご覧ください

Microsoft Defender Application Guard の概要

IsolatedWindowsEnvironment

IsolatedWindowsEnvironmentHost