在 Windows 上,系统默认的打印机表单无法从“打印服务器属性”对话框中删除。还有其他方法可以删除它们吗?我们永远不会使用信封、B5(JIS)、美国标准折叠纸等页面尺寸,我想让用户(和我自己!)不必滚动浏览一大长串的噪音列表。
如果有任何区别的话,我们的打印服务器是 Windows Server 2003。
答案1
我的第一个想法是看看是否可以通过使用 Windows API 来实现这一点,但根据这有关 Win32 打印机表单 API 的网站,甚至无法以编程方式删除系统表单:
无法在内置表单上执行 DeleteForm():它会失败并出现 ERROR_INVALID_PARAMETER。
我的第二个想法是找到一个相对独特的表单名称,例如,US Std Fanfold
然后搜索整个注册表。令人惊讶的是,该条目出现在很多地方。因此,我的建议是构建一台空白的 32 位机器(32 位以避免与影子密钥混淆)并深入研究其中一些密钥。如果您让它工作,那么应该很容易转移到您需要执行此操作的任何地方。
然而,必须要说的是,考虑到微软显然不希望你这样做,你将面临支持和兼容性问题。
答案2
标准纸质表格是打印机驱动程序的一部分,只能从相应的文件中手动删除。
以下是我如何做到这一点的指南:
1.以管理员身份打开 CMD。
2.输入“printui /s /t2”(不带引号)
3.在打开的窗口中,选择需要删除纸质表格的打印机,点击底部的“属性”。
4.在指定路径下的资源管理器中查找列出的文件(可能是 C:\Windows\System32\spool\drivers\x64\3)
5. 对所有这些文件进行备份(例如在桌面上的文件夹中)
6.使用编辑器打开每个原始文件(一次一个)。如果它包含可读代码,请按 Ctrl+F(打开搜索)并输入一个更显眼的纸质表格,这些表格应该被删除(例如明信片、法律、信件……)如果没有找到任何搜索到的单词,请关闭文件而不保存,然后尝试下一个文件。(就我而言,我在扩展名为“.gpd”和“.inx”(对于物理打印机)的文件中找到了它们,在我的 PDF-Creator 中找到了“.PPD”
7.找到条目后:应该有一个段落,其中列出了所有纸质表格的代码块。以下是一些示例:
[JAPANESE_POSTCARD]
MediaType=8.1055
InputBin=7
或者
*Option: JAPANESE_POSTCARD_90x90x50x95
{
*Name: ""
}
或者
*Option: JAPANESE_POSTCARD
{
*rcNameID: =RCID_DMPAPER_SYSTEM_NAME
*Constraints: LIST(Duplex.VERTICAL, Duplex.HORIZONTAL)
*Constraints: InputBin.4
*PageDimensions: PAIR(4724, 6992)
*PrintableArea: PAIR(4412, 6680)
*PrintableOrigin: PAIR(156, 156)
*switch: Orientation
{
*case: PORTRAIT
{
*CursorOrigin: PAIR(156, 156)
}
*case: LANDSCAPE_CC270
{
*CursorOrigin: PAIR(4568, 156)
}
}
*Command: CmdSelect
{
*CallbackID: 0x00470002
*Order: DOC_SETUP.2
}
*Command: CmdSelect
{
*CallbackID: 0x00470002
*Order: PAGE_SETUP.2
}
}
删除所有不需要的纸质表格的所有此类块。很可能有多个段落包含类似的块,因此请继续搜索文件并重复,直到找不到任何块。然后保存并关闭文件。
8.每次更改文件后,打开任意文档(例如Word、Excel...),检查该打印机的打印属性中是否仍然列出不需要的纸质表格。
-如果仍然存在:返回步骤 6,搜索下一个文件。
-如果没有:恭喜你!(如果还有更多的打印机需要删除不需要的表格,请返回步骤 3)。
-如果有任何问题:用备份覆盖最后编辑的文件。(也许你犯了一个错误,所以再试一次)
希望这能有所帮助。干杯!
答案3
在打印服务器本身上,表单位于注册表中:
HKLM\系统\CurrentControlSet\控制\打印\表格
(注意:我从来没有亲自删除过这些表格,所以在删除并测试结果之前,我会先备份密钥)。
答案4
启动“打印管理”进程(printmanagement.msc)。
在打印服务器/表单下,您可以删除打印机表单,但不能删除内置表单。
我还没有找到删除内置表单的方法,因为我也不喜欢在下拉菜单中看到所有“噪音”。