Compartir a través de


Función IsProcessInIsolatedWindowsEnvironment (isolatedwindowsenvironmentutils.h)

Determina en qué entorno de ejecución se ejecuta la aplicación: un host o un entorno aislado.

Sintaxis

HRESULT IsProcessInIsolatedWindowsEnvironment(
  BOOL *isProcessInIsolatedWindowsEnvironment
);

Parámetros

isProcessInIsolatedWindowsEnvironment

[out]

Puntero a un valor booleano que recibe el resultado de la API. Este parámetro será true si el proceso está en un entorno de Windows aislado; de lo contrario, false .

Valor devuelto

Devuelve S_OK si la función se realiza correctamente. Si se produce un error, devuelve un código de error HRESULT.

Comentarios

Cualquier aplicación que use Protección de aplicaciones de Microsoft Defender (MDAG) requerirá la capacidad de encontrar en qué entorno de ejecución se ejecuta. Esto es necesario para que la aplicación se comporte correctamente para proteger los datos de usuario/empresa, la identidad del usuario y los intereses empresariales de la aplicación.

Ejemplos

En el ejemplo siguiente se muestra cómo usar la IsProcessInIsolatedWindowsEnvironment API para determinar el entorno de ejecución de la aplicación.

#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;
}

Requisitos

Requisito Valor
Header isolatedwindowsenvironmentutils.h
Archivo DLL isolatedwindowsenvironmentutils.dll

Consulte también

Información general sobre Protección de aplicaciones de Microsoft Defender

IsolatedWindowsEnvironment

IsolatedWindowsEnvironmentHost