首页 > 解决方案 > 使用 C# 设置默认的全局打印首选项

问题描述

目标:我正在尝试创建一个简单的控制台应用程序,其功能是为我的本地机器设置默认打印首选项。默认情况下,任何访问打印机的本地应用程序都将使用此设置。

以下是尝试设置默认值的属性

  1. 纸张类型
  2. 纸张方向
  3. 利润
  4. 默认打印机

我已经实现了下面的代码,几乎没有用,

 using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer"))
        {
            using (ManagementObjectCollection objectCollection = objectSearcher.Get())
            {
                foreach (ManagementObject mo in objectCollection)
                {
                    if (string.Compare(mo["Name"].ToString(), "OneNote", true) == 0)
                    {
                        mo.InvokeMethod("SetDefaultPrinter", null, null);
                        return true;
                    }
                }
            }
        }

即使是默认打印机也会更新,但每次我ctrl+p选择不同的打印机 时即使默认打印机更改,每次我执行 <code>ctrl+p</code> 时都会选择不同的打印机

其次,我已经实现了以下代码来修改 HKCU,但它没有提供预期的结果。

        string pageSetupKey = "Software\\Microsoft\\Internet Explorer\\PageSetup";
        bool isWritable = true;

        RegistryKey rKey = Registry.CurrentUser.OpenSubKey(pageSetupKey, isWritable);

        rKey.SetValue("margin_bottom",1000, RegistryValueKind.DWord);
        rKey.SetValue("margin_top", 1000, RegistryValueKind.DWord);
        rKey.SetValue("margin_left", 1000, RegistryValueKind.DWord);
        rKey.SetValue("margin_right", 1000, RegistryValueKind.DWord);

请澄清我打算做的事情是可以实现的以及实现它的方法。我还提到了其他没有帮助的帖子和问题。注意:我想进行这些更改,不是基于流程/程序,而是针对当前用户。

标签: c#.netwindowswinapic#-4.0

解决方案


推荐阅读