1
Windows에 프린터 및 프린터 드라이버를 추가하려고이 C# 코드를 시도했습니다. Windows 7에서 작동했지만 Windows 8에서는 작동하지 않았습니다. 코드가 moPrinter.Put()
일 때 Exception (Generic failure)이 발생했습니다. 누구든지 Windows 8을 실행할 때이 오류가 발생하는 이유와 Windows 7을 사용하지 않는 이유를 말할 수 있습니까? 나는이 문제를 조사 후프린터 드라이버를 설치하는 코드는 Windows 7에서 작동하지만 Windows 8에서는 작동하지 않습니다.
public static bool AddCanonPrinter()
{
bool flag = true;
try
{
String portNumber = "9100";
String printerIP = "157.198.192.42";
String portName = "IP_" + printerIP;
ConnectionOptions options = new ConnectionOptions();
options.EnablePrivileges = true;
ManagementScope mscope = new ManagementScope(ManagementPath.DefaultPath, options);
mscope.Connect();
ManagementPath mpPort = new ManagementPath("Win32_TCPIPPrinterPort");
ManagementClass mcPort = new ManagementClass(mscope, mpPort, new ObjectGetOptions());
ManagementObject moPort = mcPort.CreateInstance();
moPort.Properties["Name"].Value = portName;
moPort.Properties["HostAddress"].Value = printerIP;
moPort.Properties["PortNumber"].Value = portNumber;
moPort.Properties["Protocol"].Value = 1;
moPort.Put();
ManagementPath mpPrinter = new System.Management.ManagementPath("Win32_Printer");
ManagementClass mcPrinter = new ManagementClass(mscope, mpPrinter, new ObjectGetOptions());
ManagementObject moPrinter = mcPrinter.CreateInstance();
moPrinter.Properties["Name"].Value = "Canon";
moPrinter.Properties["DeviceID"].Value = "Canon";
moPrinter.Properties["DriverName"].Value = "Canon iR C2880/C3380";
moPrinter.Properties["PortName"].Value = portName;
moPrinter.Properties["Network"].Value = true;
moPrinter.Properties["Shared"].Value = false;
moPrinter.Put();
}
catch
{
int msgCode = Marshal.GetLastWin32Error();
string msg = GetSystemMessage(msgCode);
flag = false;
}
return flag;
}
윈도우 8에 성공적으로 작동 것으로 나타났습니다 코드 또는 파일 시스템의 어디에서나 사용 가능한 프린터 드라이버 이름을 검색 하시겠습니까? – Gomiunik
예. printerdrivers 목록은 레지스트리의 SYSTEM \ CurrentControlSet \ Control \ Print \ Environments \ Windows x64 \ Drivers \ Version-3에 저장됩니다. (Windows x64를 32 비트 드라이버 용 Windows x86으로 대체) –