目前,我们正在使用一个由用户定义的函数启动的报表打印应用程序,该应用程序位于作为服务运行的Firebird数据库中。
UDF由一个简单的DLL组成,该DLL启动报告应用程序,并通过“CreateProcessAsUser”API传递要打印的报告ID。
具体来说,我们模拟一个特定的windows帐户,以访问用户的打印机。 运行该软件的计算机从不参加。 没有人真的打开一个会议。
所以我们就是这么做的:
如何使用windows Small Business Server 2008从Web应用程序进行打印?
如何直接打印而不显示打印对话框在windows中使用python脚本?
如何确保windows升级后为打印驱动程序生成正确的.BUD文件
用可打印区域打印带有页边空白的文档
在windows服务中打印
logonUser( sUser,nil,sPass,logoN32_logoN_INteraCTIVE,logoN32_PROVIDER_DEFAulT,hToken );
…
LoadUserProfile(hToken,ProfileInfo);
…
ImpersonateLoggedOnUser(hToken);
…
StartupInfo.lpDesktop := Pchar(\’Winsta0Default\’);
CreateProcessAsUser(hToken,Pchar(sCommand),False,StartupInfo,ProcessInfo);
…
UnloadUserProfile(hToken,ProfileInfo.hProfile);
现在我们已经转移到了windows 7平台,显然,它不再工作。
即使用户没有login,是否仍然可以冒充用户帐号,并在windows Vista / 7下使用他的打印机? (否则,我会使用用户当前活动的会话ID)
谢谢你的帮助
即使队列被重命名,如何唯一地标识windows上的打印队列?
是否有可能在windows上使用Qt在networkingUSB打印机上逐行打印?
windows实用程序可以从文件放置中打印和存档
如何从rundll32调用中捕获结果?
CUPS旁路接口
总结
以上是内存溢出为你收集整理的从Windows 7服务启动应用程序全部内容,希望文章能够帮你解决从Windows 7服务启动应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容