本地打印后台处理程序服务没有运行和windows无法连接到打印机拒绝访问

VISTA/win7添加网络中xp系统共享打印机本“地打印后台处理程序服务没有运行”和“windows无法连接到打
印机拒绝访问”的解决方法 
 
出现这种问题的原因是:连接打印机的机器是XP系统,只安装了XP下的打印机驱动,该驱动只能支持XP/200X 系统的机器共享打印,而不支持vista或者win7。  
解决方案:  
1、点击开始/控制面板/打印机; 
2、选择“添加打印机”; 
3、选择“添加本地打印机”,按一下步; 
4、选择“创建新端口”/ 选择“local port”这一项,按下一步,提示输入端口名称,名称中输入共享打印机的绝对路径,格式为:\\XXX(共享打印机的计算机名或IP地址)/xxx(共享打印机的共享名称),如 \\192.168.0.254/HplaserJ,按确定; 
5、从磁盘安装,选择好下载过来的64位驱动,覆盖旧驱动 
6、添加成功,打印测试页试试。 
7、如果提示端口错误,则只要运行\\XXX(共享打印机的计算机名或IP地址),然后双击打印机连接,连接成功后点菜单里设为默认打印机。
如果连接打印机的机器在域中,或者是加了密码需要授权访问的,在执行添加打印机之前,执行以下操作:  
(否则可能会出现“未知的用户名和密码”的提示)  
1.开始/运行(可以WIN+R快捷) 
2.输入共享打印机的那台计算机名或IP地址,如//192.168.0.254  
3.在用户名和密码框中填入帐户信息,选择保存密码  
4.OK,执行上面的解决方案添加打印机,成功。

转载于:https://www.cnblogs.com/swek/p/4338089.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows下使用C语言集成打印后台处理程序API接口获取默认打印机各项信息,可以通过以下步骤实现: 1. 引入Windows API头文件 在C语言程序中,需要使用Windows API头文件来调用系统提供的API接口。在此场景下,需要包含以下头文件: ```c #include <windows.h> #include <winspool.h> ``` 2. 获取默认打印机名称 在Windows系统中,可以通过调用GetDefaultPrinter函数获取默认打印机名称。该函数的定义如下: ```c BOOL GetDefaultPrinter(LPTSTR pszBuffer, LPDWORD pcchBuffer); ``` 其中,参数pszBuffer为一个指向缓冲区的指针,用于存储获取的默认打印机名称。参数pcchBuffer为一个指向DWORD类型的指针,用于存储缓冲区的大小。 示例代码: ```c TCHAR defaultPrinterName[MAX_PATH]; DWORD bufferSize = MAX_PATH; GetDefaultPrinter(defaultPrinterName, &bufferSize); printf("Default Printer Name: %s\n", defaultPrinterName); ``` 3. 获取默认打印机设备上下文句柄 获取默认打印机设备上下文句柄的方法是调用OpenPrinter函数。该函数的定义如下: ```c BOOL OpenPrinter(LPCTSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTS pDefault); ``` 其中,参数pPrinterName为一个指向打印机名称的指针,可以传入NULL表示获取默认打印机。参数phPrinter为一个指向HANDLE类型的指针,用于存储获取的打印机设备上下文句柄。参数pDefault为一个指向PRINTER_DEFAULTS类型的指针,用于指定打印机的默认属性。 示例代码: ```c HANDLE defaultPrinterHandle = NULL; PRINTER_DEFAULTS printerDefaults = {NULL, NULL, PRINTER_ACCESS_USE}; if (!OpenPrinter(defaultPrinterName, &defaultPrinterHandle, &printerDefaults)) { printf("Failed to open default printer\n"); return; } ``` 4. 获取打印机属性信息 获取打印机属性信息的方法是调用GetPrinter函数。该函数的定义如下: ```c BOOL GetPrinter(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded); ``` 其中,参数hPrinter为打印机设备上下文句柄;参数Level为指定返回的打印机信息的级别,常用的有2和5;参数pPrinter为一个指向缓冲区的指针,用于存储获取的打印机信息;参数cbBuf为缓冲区的大小;参数pcbNeeded为一个指向DWORD类型的指针,用于存储实际需要的缓冲区大小。 示例代码: ```c DWORD neededSize = 0; GetPrinter(defaultPrinterHandle, 5, NULL, 0, &neededSize); BYTE* printerInfo = (BYTE*)malloc(neededSize); if (!GetPrinter(defaultPrinterHandle, 5, printerInfo, neededSize, &neededSize)) { printf("Failed to get printer info\n"); free(printerInfo); return; } PRINTER_INFO_5* printerInfo5 = (PRINTER_INFO_5*)printerInfo; printf("Driver Name: %s\n", printerInfo5->pDriverName); printf("Port Name: %s\n", printerInfo5->pPortName); free(printerInfo); ``` 上述代码中,我们调用GetPrinter函数两次,第一次获取需要的缓冲区大小,第二次获取打印机属性信息。在第二次调用中,我们指定了获取打印机信息的级别为5,得到的是PRINTER_INFO_5结构体,其中包含了打印机的驱动名称和端口名称等信息。 完整代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <winspool.h> int main() { // 获取默认打印机名称 TCHAR defaultPrinterName[MAX_PATH]; DWORD bufferSize = MAX_PATH; GetDefaultPrinter(defaultPrinterName, &bufferSize); printf("Default Printer Name: %s\n", defaultPrinterName); // 获取默认打印机设备上下文句柄 HANDLE defaultPrinterHandle = NULL; PRINTER_DEFAULTS printerDefaults = {NULL, NULL, PRINTER_ACCESS_USE}; if (!OpenPrinter(defaultPrinterName, &defaultPrinterHandle, &printerDefaults)) { printf("Failed to open default printer\n"); return -1; } // 获取打印机属性信息 DWORD neededSize = 0; GetPrinter(defaultPrinterHandle, 5, NULL, 0, &neededSize); BYTE* printerInfo = (BYTE*)malloc(neededSize); if (!GetPrinter(defaultPrinterHandle, 5, printerInfo, neededSize, &neededSize)) { printf("Failed to get printer info\n"); free(printerInfo); return -1; } PRINTER_INFO_5* printerInfo5 = (PRINTER_INFO_5*)printerInfo; printf("Driver Name: %s\n", printerInfo5->pDriverName); printf("Port Name: %s\n", printerInfo5->pPortName); free(printerInfo); ClosePrinter(defaultPrinterHandle); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值