Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
2.1 KiB

// AddPrint.cpp : Implementation of COlePrivKSApp and DLL registration.
#include "stdafx.h"
#include "OlePrn.h"
#include "AddPrint.h"
STDMETHODIMP CAddPrint::AddPrinterConnection(BSTR lpPrinterName)
{
HRESULT hr = CanIAddPrinterConnection();
if (FAILED(hr))
return hr;
if (::AddPrinterConnection(lpPrinterName))
return S_OK;
else
return (SetScriptingError(CLSID_AddPrint,
IID_IAddPrint,
GetLastError()));
}
STDMETHODIMP CAddPrint::DeletePrinterConnection(BSTR lpPrinterName)
{
HRESULT hr = CanIDeletePrinterConnection( lpPrinterName );
if (FAILED(hr))
return hr;
if (::DeletePrinterConnection(lpPrinterName))
return S_OK;
else
return (SetScriptingError(CLSID_AddPrint,
IID_IAddPrint,
GetLastError()));
}
HRESULT CAddPrint::CanIAddPrinterConnection(void) {
DWORD dwPolicy;
HRESULT hr = GetActionPolicy(URLACTION_JAVA_PERMISSIONS, dwPolicy);
if (SUCCEEDED(hr)) {
hr = (dwPolicy == URLPOLICY_JAVA_MEDIUM ||
dwPolicy == URLPOLICY_JAVA_LOW ||
dwPolicy == URLPOLICY_ALLOW) ? S_OK : E_ACCESSDENIED;
}
return hr;
}
HRESULT CAddPrint::CanIDeletePrinterConnection(BSTR pbstrPrinter) {
DWORD dwPolicy;
LPTSTR lpszPrinter = NULL;
HRESULT hr = GetActionPolicy(URLACTION_JAVA_PERMISSIONS, dwPolicy);
USES_CONVERSION;
if (SUCCEEDED(hr)) {
switch(dwPolicy) {
case URLPOLICY_JAVA_LOW:
case URLPOLICY_ALLOW:
hr = S_OK;
break;
case URLPOLICY_JAVA_MEDIUM:
lpszPrinter = OLE2T( pbstrPrinter );
hr = PromptUser(COlePrnSecurity::DeletePrinterConnection, lpszPrinter );
hr = SUCCEEDED(hr) ?
(HRESULT_CODE(hr) == S_OK ? S_OK : E_FAIL) :
hr;
break;
default:
hr = E_ACCESSDENIED;
}
}
return hr;
}