Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se puede llamar a IsCrossIsolatedEnvironmentClipboardContent después de que una aplicación detecte un error de pegado para determinar si el contenido que se pega procede del otro lado de un límite de Protección de aplicaciones de Microsoft Defender (MDAG). En este escenario, las aplicaciones pueden mostrar un mensaje de error personalizado para ayudar a los usuarios a comprender que mdAG bloqueó intencionadamente la operación del Portapapeles.
Syntax
HRESULT IsCrossIsolatedEnvironmentClipboardContent(
BOOL *isCrossIsolatedEnvironmentClipboardContent
);
Parámetros
isCrossIsolatedEnvironmentClipboardContent
[out]
Puntero a un valor booleano que recibe el resultado de la API. Este parámetro será true si el contenido del Portapapeles procede del otro lado de un límite MDAG; de lo contrario, false .
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es S_OK. Si se produce un error, devuelve un HRESULT código de error.
Observaciones
Se puede llamar a esta API desde el host y la instancia de aplicación del entorno aislado de Windows y puede detectar ambos escenarios pertinentes:
- Escenario 1: se llama desde un documento host (por ejemplo: pegar contenido al host)
- Devuelve true si el contenido del Portapapeles procede de cualquier entorno aislado de Windows.
- Escenario 2: se llama desde un documento aislado de Windows Environment (por ejemplo: pegar contenido en entorno aislado)
- Devuelve true si el contenido del Portapapeles procede del host o de otro entorno aislado de Windows.
Esta API también permite que las aplicaciones sigan mostrando su controlador de errores de pegado predeterminado cuando corresponda. Por ejemplo, el contenido de copia y pegado dentro del mismo entorno aislado no está sujeto a la directiva del Portapapeles MDAG. Cualquier error sería debido a un error de pegado no relacionado, como datos dañados. En este caso, IsCrossIsolatedEnvironmentClipboardContent devolvería false, por lo que la aplicación sabe seguir su flujo de controlador de errores de pegado predeterminado.
Examples
En este ejemplo se muestra cómo una aplicación puede personalizar el mensaje de error de pegado que se muestra al usuario. El primer fragmento de código muestra cómo usar IsCrossIsolatedEnvironmentClipboardContent para mostrar un mensaje de error adecuado si se produce un error en el controlador de pegado de una aplicación. En este ejemplo, el controlador de pegado OnPaste de la aplicación (definido en el segundo fragmento de código) se invoca mediante el WM_PASTE mensaje recibido en su WndProc.
// Assume this is the WndProc method that handles WM messages for an app.
// Assume SampleAppHelperClass::DisplayMsgBox shows a simple UI error dialog with given string.
LRESULT CALLBACK SampleAppWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT retVal = 0;
switch (message)
{
case WM_PASTE:
{
RETURN_LAST_ERROR_IF(!OpenClipboard(hWnd));
// See definition of OnPaste in code snippet #2, below.
retVal = OnPaste(hWnd, message, wParam, lParam);
// To avoid a race condition with the clipboard changing underneath us, call
// IsCrossIsolatedEnvironmentClipboardContent with the clipboard still open.
HRESULT hr = S_OK;
BOOL isCrossEnvContent = FALSE;
hr = IsCrossIsolatedEnvironmentClipboardContent(&isCrossEnvContent);
CloseClipboard();
if (retVal != ERROR_SUCCESS)
{
// Show a MDAG specific error message if the clipboard content crossed the host/isolated
// environment boundary. Otherwise, show the app’s default paste error message.
if (SUCCEEDED(hr) && isCrossEnvContent)
{
// This runs on both the host and Isolated Environment app instance, so customize error
// message per scenario.
BOOL isIsolatedWindowsEnvironment = FALSE;
IsProcessInIsolatedWindowsEnvironment(&isIsolatedWindowsEnvironment);
std::wstring direction = isIsolatedWindowsEnvironment ? L"into" : L"from";
SampleAppHelperClass::DisplayMsgBox(hWnd, L"Pasting content %s a MDAG document failed, verify this operation is permitted by your administrator.\n", direction.c_str());
}
else
{
SampleAppHelperClass::DisplayMsgBox(hWnd, L"Paste operation failed.\nError code 0x%x", retVal);
}
}
}
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return retVal;
}
El segundo fragmento de código muestra el controlador de pegado de una aplicación para demostrar cómo se pueden producir errores en las acciones del Portapapeles si MDAG lo bloquea.
// Invoked by user Paste action, such as Ctr+V or clicking the Paste button.
HRESULT OnPaste(HWND hWnd)
{
RETURN_LAST_ERROR_IF(!IsClipboardFormatAvailable(CF_TEXT));
HGLOBAL clipboardData = GetClipboardData(CF_TEXT);
RETURN_LAST_ERROR_IF(clipboardData == NULL);
// Now that we've verified clipboard access suceeds, assume InsertTextFromClipboard is an
// application defined method to insert text into desired location.
RETURN_IF_FAILED(InsertTextFromClipboard(clipboardData, hWnd));
CloseClipboard();
return S_OK;
}
Requisitos
| Requirement | Importancia |
|---|---|
| Header | isolatedwindowsenvironmentutils.h |
| Library | IsolatedWindowsEnvironmentUtils.lib |
| DLL de |
isolatedwindowsenvironmentutils.dll |
Consulte también
Introducción a la Protección de aplicaciones de Microsoft Defender