Autor Beitrag
3marci
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 61
Erhaltene Danke: 5

Windows 7 / Kubuntu 11.04
C# / vb.net / php / progress (VS 2010 Express / SharpDevelop / NetBeans / proAlpha)
BeitragVerfasst: Mi 24.08.11 15:29 
Hallo Community,

Ich möchte jetzt einen Netzwdrucker für den Benutzer X mappen, hier die Methode dafür:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
using System;
using System.Windows.Forms;
using System.Management;

public static void AddPrinter(string sPrinterName)
{
  ManagementScope oManagementScope;

  try
  {
    oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
    oManagementScope.Connect();

    ManagementClass oPrinterClass = new ManagementClass(new ManagementPath("Win32_Printer"), null);
    ManagementBaseObject oInputParameters = oPrinterClass.GetMethodParameters("AddPrinterConnection");

    oInputParameters.SetPropertyValue("Name", sPrinterName);

    oPrinterClass.InvokeMethod("AddPrinterConnection", oInputParameters, null);

    MessageBox.Show("OK!");
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
}


Leider wird das Programm nicht von dem Benutzer ausgeführt der den Drucker haben soll, sondern von einem anderen (mache das auf einem Terminal Server).

Was auch funktionieren würde wäre ein Mutterprozess der alle Benutzer kennt und dann eine andere Exe Datei mit dem endsprechenden Benutzer ausführt, aber wie macht dann das?