ciao, non so che pesci prendere..
ho una classe per la firma digitale dei file, utilizza una libreria acquistata da infocert, le bouncycastle e una dll esterna come driver..
fin qui niente di che..

su windows 7 non ho problemi mentre su windows 8 al termine della procedura di firma corretta il processo rimane appeso e non si chiude nemmeno forzando con System.exit()

i produttori della libreria infocert mi garantiscono che non è un problema della loro libreria, quindi suppongo sia la dll che tiene lokkato qualcosa...

secondo voi ho un modo per forzare il kill ?
riporto il codice di esempio utilizzato (si lo so si dovrebbe utilizzare il finally per le close e il flush, questo esempio non è mio, è di infocert.. ma anche correggendo il risultato non cambia)

ma magari qualcuno vedo qualcosa che mi sfugge o sa qualcosa del perchè su windows 8 si blocca e sul 7 per esempio no !!!

codice:
public class TestFirma {
                /**
                 * @param args
                 * @throws Exception 
                 * @throws GeneralSecurityException 
                 */
                public static void main(String[] args) throws GeneralSecurityException, Exception {
                               // Configurazione Security Provider
                               Security.addProvider(new BouncyCastleProvider());
                               String fileToSign = "Test4.java";
                               String signedFile = fileToSign + ".p7m";
                               ISignMessage smsg = null;
                               BufferedInputStream bis = null;
                               FileOutputStream fos = null;
                               // Impostazione con il driver delle "direttive" di firma
                               CryptoDriver driver = new CryptoDriver();
                               driver.setSignatureType(CryptoDriver.LEGAL_SIGNATURE);
                               //driver.setSigningCN("FERRARI ANDREA");
                               // Imposto il PIN ed il path della libreria per accedere al dispositivo hw
                               CryptoEngine engine = new HardwareEngine("11111111", "C:/WINDOWS/system32/SissP11.dll",1);
                               engine.open();
                               smsg = SignMessageFactory.getInstance().createISignMessage(driver, engine);
                               // Impostazione input e output stream
                               bis = new BufferedInputStream(new FileInputStream(fileToSign));
                               smsg.setInputStream(bis);
                               File fo = new File(signedFile);
                               fos = new FileOutputStream(fo);
                               smsg.setOutputStream(fos);
                               // Generazione del doc firmato
                               smsg.encode(driver);
                               fos.flush();
                               bis.close();
                               fos.close();
 
                }
}