C#使用CreateFile打开远程共享打印机的问题
现有一个程序,使用windows的API中的CreateFile函数打开远程共享打印机,如果连接打印机的那台电脑是winxp没问题,但是如果连接打印机的那台电脑是win7,死活不行,代码如下,哪位高手指点下啊,谢谢了--------------------编程问答-------------------- 唉,,不懂,,,没人回答,就把分给我吧。好人一生平安~~~ --------------------编程问答-------------------- 这句太搞笑了,完全是无用功
//--------------------------------------------------------------------------------------以下是引用API
public SafeFileHandle sfh;
public IntPtr ptr;
public StreamWriter sw;
[DllImport("Kernel32.dll")]
static extern IntPtr CreateFile(
string filename,
[MarshalAs(UnmanagedType.U4)]FileAccess fileaccess,
[MarshalAs(UnmanagedType.U4)]FileShare fileshare,
int securityattributes,
[MarshalAs(UnmanagedType.U4)]FileMode creationdisposition,
int flags,
IntPtr template);
[DllImport("kernel32.dll")]
static extern bool CloseHandle(IntPtr hObject);
//--------------------------------------------------------------------------------------以下是打印代码
PrinterAddr = PrinterAddr.Replace("\\", @"\");
sfh = null;
ptr = CreateFile(PrinterAddr, FileAccess.Write, FileShare.Write, 0, FileMode.Open, 0, IntPtr.Zero);
if (ptr.ToInt32() == -1)
{
return "LPT1 Port Open Failed" ;
}
sfh = new SafeFileHandle(ptr, true);
sw = new StreamWriter(new FileStream(sfh, FileAccess.Write));
sw.WriteLine(str);
sw.Flush();
sw.Close();
PrinterAddr = PrinterAddr.Replace("\\", @"\");
先得确定是不是可以打印,再用代码控制。 --------------------编程问答-------------------- 难道那台win7是64位??? --------------------编程问答-------------------- 所用的win7都不是64位的,确定是可以打印的,winxp都可以使用就是win7不行,我考虑是win7权限控制严格的问题,但是createfile不知道怎么使用用户名密码 --------------------编程问答--------------------
可以分开嘛,先获取共享打印机权限,再用createfile --------------------编程问答--------------------
刚刚试验的win7可以使用,我试验的是xp的机器使用共享打印机,是win7的机器共享出来的打印机。 --------------------编程问答--------------------
你试试在你的机器访问下win7的共享文件夹能访问到,\\192.168.x.x --------------------编程问答-------------------- 要win7开放权限才行,可能还要关了win7的防火墙等,反正win7因安全机制提升,操作起来很麻烦
补充:.NET技术 , C#