Obtenez la liste des imprimantes locales pour modifier l'imprimante IP d'imprimante et par défaut

StackOverflow https://stackoverflow.com/questions/5978205

  •  12-11-2019
  •  | 
  •  

Question

Comment puis-je trouver toutes les imprimantes locales de la machine où le programme est en cours d'exécution avec un utilisateur qui n'a pas de droits d'administrateur.J'ai besoin de remapper l'IP de l'imprimante et de définir l'imprimante par défaut.Mon idée est d'utiliser l'impersonnation pour le faire, mais je ne sais pas où trouver l'imprimante et s'il s'agit d'une bonne solution pour utiliser l'impersonnation.

Merci pour une aide!

Était-ce utile?

La solution

Je ne pense pas que vous aurez de la chance avec cela.L'impersonnation ne fonctionnera pas ici et je viens de jeter une exception.Vous pouvez essayer cela en faisant une impersonnation et essayer d'ouvrir Environnement.Domaine, cela devrait vous donner une exception.

Vous pouvez essayer quelque chose comme ceci sans impersonnation:

ManagementScope mscope = new ManagementScope(@"\root\CIMV2", options);
mscope.Connect();
System.Management.ObjectQuery oQuery = new ObjectQuery("Select * from Win32_TCPIPPrinterPort");
System.Management.ManagementObjectSearcher searcher = new ManagementObjectSearcher(mscope, oQuery);
ManagementObjectCollection moCollection = searcher.Get();

foreach (ManagementObject mo in moCollection)
{
    string name = mo["Name"].ToString();

    if (name.Equals(this.portName))
    {
        System.Threading.Thread.Sleep(10000);
        mo["HostAddress"] = this.printerIP;
        mo.Put();
        Console.WriteLine("Adjusted Printer Port to new IP address " + this.printerIP);
        return true;
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top