Hola de nuevo!!
Estuve mirando eso que me comentábais del VID y el PID y no utilizamos nada de eso, os voy a pasar el código y así miráis que es lo que puede hacer que el dispositivo funcione sólo en determinados ordenadores, al menos en uno me detecta perfectamente el USB y me genera un puerto COM.
Os comento un poco, el display muestra "USB failed" cuando el ordenador no detecta el usb y tampoco me pide instalar nada, simplemente, no hay conexión, pero en el PC que sí me lo detecta, en el display aparece "USB OK" y al momento aparece en el ordenador el nuevo puerto COM conectado.

Y como este proyecto lo comenzó otra persona que ya no se encuentra aquí me es imposible pedirle ayuda.
Bueno, muchas gracias por vuestro tiempo y la ayuda que prestáis, estoy aprendiendo mucho
Un saludo.
------
Aquí va el código:
#include <18F2455.h>
#use delay(clock=24000000)
#fuses HSPLL, PLL2, USBDIV, CPUDIV3,VREGEN, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT, NOLVP
#byte port_c=7
#byte port_d=8
#include <stdlib.h>
#include <usb_cdc.h>
#include <lcd.c>
#define usb_con PIN_B3
void mensajeinicio(void);
void main(void)
{
int i=0;
int usb=0;
float r=0,aux=0,res=0;
lcd_init();
usb_init();
/////Configuracion del convertidor An-Dig/////
setup_port_a(AN0 | VSS_VREF); //Se configura el convertidor an-dig.
setup_adc(ADC_CLOCK_DIV_8); //Tiempo de captura del convertidor
mensajeinicio();
do{
i=0;
r=res=0;
//////Secuencia de habilitacion del USB//////
if(!input(usb_con)) usb=0;
if(input(usb_con) && usb==0)
{
i=0;
do{
lcd_putc("\f Estableciendo\n Conexion");
usb=usb_enumerated();
delay_ms(500);
i+=1;
}while(usb==false && i<=10);
if(i>10)
{
usb=0;
lcd_putc("\fUSB Failed");
delay_ms(1000);
lcd_putc("\f");
}
else
{
usb=1;
lcd_putc("\fUSB OK");
delay_ms(1000);
lcd_putc("\f");
}
}
/////Toma de Datos/////
for(i=0;i<100;i++)
{
set_adc_channel(0); //Seleccionar el canal 0
delay_us(20); //Retardo para obtener datos fiables
r+=read_adc(); //Guardar datos
}
i++;
r/=i;
aux=1.3716*r;
res=aux+299.83;
/////Visualizacion/////
if(r>=1012)
{lcd_putc("\f:Fuera de Rango:\n");
if(usb==1) usb_cdc_putc("<FDR>\r\n");
}
else
{
printf(lcd_putc,"\fR: %4.3f Ohm\n",res);
//printf(lcd_putc,"\f %4.0f \n",r);
if(usb==1) printf(usb_cdc_putc,"%2.3f\r\n",res); //USB
}
delay_ms(2000);
}while(true);
}
void mensajeinicio()
{
lcd_putc("CONDUCTIVIMETRO\n");
lcd_putc(" PARA LIQUIDOS\n");
delay_ms(1500);
lcd_putc("\f");
}