Программное обеспечение, которому “Звонит Домой”; хороший? плохо? Зло? Какое уведомление каждый дает? Как к? [закрытый]

Чтобы следовать рекомендациям Microsoft и обеспечить поддержку высокого разрешения для вашего приложения, вы должны изменить несколько вещей. Прежде всего, в вашем файле Designer формы измените AutoScaleDimensions на AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);. И AutoScaleMode - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;.

В приложении просто используйте Application.SetCompatibleTextRenderingDefault(false);

Я также добавил небольшую поправку для установки ClientSize формы. AdjustClientWidthToDPIScale () . В зависимости от масштаба DPI ширина формы клиента изменяется в соответствии с фактором DPI.

Весь код указан ниже.

Файл App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
    </startup>
      <System.Windows.Forms.ApplicationConfigurationSection>
    <add key="DpiAwareness" value="PerMonitorV2" />
  </System.Windows.Forms.ApplicationConfigurationSection>
</configuration>

Код формы:

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace FormTestLib
{
    public partial class ValidatingSplash : Form
    {
        public ValidatingSplash()
        {
            InitializeComponent();

            AdjustClientWidthToDPIScale();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.CenterToParent();
        }

        private void AdjustClientWidthToDPIScale()
        {
            double dpiKoef = Graphics.FromHdc(GetDC(IntPtr.Zero)).DpiX / 96f;

            int compansatedWidth = (int)(ClientSize.Width * dpiKoef);


            this.ClientSize = new Size(compansatedWidth, this.ClientSize.Height);
        }

        [DllImport("User32.dll")]
        private static extern IntPtr GetDC(IntPtr hWnd);
    }
}

Дизайнер форм [ 1121]:

    namespace FormTestLib
{
    partial class ValidatingSplash
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ValidatingSplash));
            this.lblValidating = new System.Windows.Forms.Label();
            this.SuspendLayout();

            // 
            // lblValidating
            // 
            this.lblValidating.Anchor = System.Windows.Forms.AnchorStyles.None;
            this.lblValidating.AutoSize = true;
            this.lblValidating.Location = new System.Drawing.Point(58, 45);
            this.lblValidating.Name = "lblValidating";
            this.lblValidating.Size = new System.Drawing.Size(166, 13);
            this.lblValidating.TabIndex = 7;
            this.lblValidating.Text = "Validating cached credentials...";
            // 
            // ValidatingSplash
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(274, 104);
            this.ControlBox = false;
            this.Controls.Add(this.lblValidating);
            this.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            //this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "ValidatingSplash";
            this.Text = "Validating Credentials";
            this.ResumeLayout(false);
            this.PerformLayout();
        }

        #endregion
        private System.Windows.Forms.Label lblValidating;
    }
}

Код приложения :

[STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        ValidatingSplash Splash = new ValidatingSplash();
        Splash.ShowDialog();
    }
16
задан John Sheehan 25 October 2008 в 19:06
поделиться

13 ответов

Я был бы склонен использовать это умеренно. Любое информационное действие должно быть, подписываются, а не уклонение (т.е. отчеты о катастрофическом отказе, статистика, и т.д.).

Для защиты Ваших активов, я думаю, что она прекрасна. Многие скажут Вам, что это не прекратит обманывать, потому что люди могут одурачить его, но это может помочь. Просто не собирайте информацию при этом, которую можно было (реалистично) считать вторжением в личную жизнь, и я не вижу проблемы с нею. Также удостоверьтесь, что то независимо от того, что делается, заточено и протестировано достаточно хорошо, что это не собирается оказывать негативное влияние на пользовательский опыт. т.е. если этому не удается соединиться при попытке позвонить домой, и программное обеспечение больше не работает в результате, который мог быть большой проблемой.

6
ответ дан 30 November 2019 в 17:17
поделиться

Вы упомянули в своих комментариях кому-то еще, что главное беспокойство с подпоставщиками, которые хотят создать их собственные лицензии. Если это так, я сфокусировал бы любой программный продукт вокруг создания их честный. Самое важное преимущество, которое я видел бы из этого решения, - то, что Вы не влияете на конечных пользователей этот путь, только торговый посредник в середине. И если расположение будет прибыльным для них, будет стоить, чтобы сделать то независимо от того, что необходимо гарантировать, что их операции являются честными.

, Например, Вы создаете программное обеспечение генерации ключей и распределяете торговым посредникам. Это программное обеспечение могло автоматически передать назад в Вашу компанию, какие лицензии были сгенерированы и любые другие связанные данные. Если программное обеспечение не может связаться домой, то ключи не становятся сгенерированными.

4
ответ дан 30 November 2019 в 17:17
поделиться

Я не уверен, что сделал бы это, если бы я продал программное обеспечение и если бы я сделал то я, конечно, дал бы пользователю выбор, участвовать ли, но я вижу, что некоторое действительное значение в наличии определенных типов ошибок (не общие, а скорее неожиданные) сообщает непосредственно базе данных ошибки. Вы, возможно, должны отфильтровать их так, чтобы дубликаты были удалены, или по крайней мере отмечены как таковые, на основе некоторой подписи из сообщения.

2
ответ дан 30 November 2019 в 17:17
поделиться

Я думаю, что это был Dvorak или кто-то как этот, который покрыл это однажды. Я полностью согласился с его положением. Информированное согласие является лучшим способом пойти.

в программном обеспечении Термоусадочной пленки должно быть сказано ясно за пределами поля, какие сетевые порты требуются, и это должно быть расширено для включения телефонных домашних требований и типа собранной информации.

Другое коммерческое программное обеспечение то же самое. Заметно список во время установки и в записанной документации, в справке/о, требуемых портах и типе данных передается.

я думаю, что это должно требоваться законом то же как (американские) списки пищевых ингредиентов.

2
ответ дан 30 November 2019 в 17:17
поделиться

Pro, с согласием пользователей (или просто добавляют его к Вашему контракту)... Для меня это главным образом об отслеживании статистики, и я - своего рода нацист данных..., но хорошо быть в состоянии показать числа боссу... Можно исследовать, сколько людей купило его по сравнению с тем, сколько на самом деле использует его; как они используют его, когда, отношения между потребительским размером и сокращают денежную сумму, и т.д. Важные шишки любят свои круговые диаграммы, и Dev действительно нужна хорошая идея, каким областям нужно улучшение.

Другая большая причина состоит в том, что Ваше приложение может быть сделано отправить обратную связь непосредственно Команде разработчиков, если существует маленькая клиентская база. Еще, отправьте обратную связь панели людей фильтра, которые создадут отчеты и отправят тех штату Dev. Так или иначе эта функция позволяет Вам знать точно, что клиенты хотят, быстро и легко, не имея необходимость создавать фокус-группы и предполагать, что Деловые люди говорят Вам истину о потребительской связи.

Не то, чтобы Деловые люди когда-либо лгут людям программного обеспечения, ни запутывают значение чего-то...:)

2
ответ дан 30 November 2019 в 17:17
поделиться

"Я также haven’t подсказка, как я спроектировал бы это".

А простой путь состоял бы в том, чтобы записать приложение, которое установлено наряду с каждыми из Ваших генерирующихся приложений дохода. Это знает, как определить, какие версии Вашего программного обеспечения выполняет, и это может быть инициировано для выполнения периодически, или это называют из других приложений, и т.д.

Вам нужен сервер, который просто публикует/обеспечивает карту (пары данных) для продукта/платформы и версии. Тогда бизнес-логика определения, если новая версия доступна, находится на клиенте. Кроме того, можно сохранить ту логику на стороне сервера (много, чтобы быть сказанными для того) и иметь клиентское приложение, отправляют запрос только с текущей ver/platform информацией, и ответ будет сгенерирован, рекомендуются ли новая версия или патч.

это просто первое, что пришло на ум - реальный дизайн требуется тем более, что у Вас есть существующее программное обеспечение там, по-видимому.

Что касается проверки несанкционированное использование и то, чтобы собрать статистические данные я думаю, что те - ужасные идеи. Компании записываются этим, и многие зарабатывают плохие репутации.

, Если Вы не продаете его как услуга, сокращают это, Вы собираетесь контролировать здоровье программного обеспечения, и т.д. и клиент просит его, я отбросил бы его.

Придумывает лучший способ защитить Ваше программное обеспечение.

1
ответ дан 30 November 2019 в 17:17
поделиться

Примеры Phone=home:

Некоторые компании имеют активацию продукта, которая требует периодического дома вызова по телефону, чтобы продолжить работать. Я думаю, что это походит на то, о чем Вы говорите. Windows Activation - что-то вроде этого, чему я верю.

Некоторые компании используют подписаться звонящую дому систему для отслеживания, какие функции Вы используете большинство, или как Вы используете UI, и т.д.

Все еще, другие компании имеют вещи как создание отчетов катастрофического отказа (Microsoft берет катастрофический отказ, сообщает, что люди отправляют их суперсерьезно, например) и некоторые (CCNetConfig последнее я видел) даже позволяют Вам зарегистрировать ошибку тут же и затем.

Ничего подобного не шпионское ПО или вредоносное программное обеспечение.

1
ответ дан 30 November 2019 в 17:17
поделиться

Мне важные аспекты:

  • Явный подписываются/отказываются.
  • Гарантируют, что существует прямое преимущество для пользователя вызова по телефону домой (такого как обновления).
  • Активно разрабатывают Ваше приложение, чтобы ожидать и быть улучшенными через такие обновления.
  • Удостоверяются, что Вы обеспечиваете регулярные обновления.
  • Для пользователей, что уклонение, обеспечьте, руководство означает для них звонить домой.
  • Делают это бесшумно. Обновления Logitech действительно p* меня прочь - они обычно подбрасывают большой диалог один раз в неделю, говоря мне, что они собираются проверить на обновления, тогда другое сообщение мне, что нет никого (и никогда нет).
  • Удостоверяются, что приложение продолжает функционировать правильно, даже если оно не может позвонить домой.
1
ответ дан 30 November 2019 в 17:17
поделиться

Это приносит пользу пользователю?

Пользователи могут получить много выгоды из программного обеспечения, звоня домой. С "ручными вызовами" (т.е. пользователь выбирает команду, которая ясно дает понять, программное обеспечение теперь соединится с Вашим сервером так или иначе), нет ничего плохо вообще, и это может, например, упрощать процесс обновления, загружать образцы или дополнения, показывать Вашу текущую новостную рассылку, отправлять точную диагностику и информацию о катастрофическом отказе.

для Автоматических вызовов нужно пользовательское согласие, и они не должны требоваться для другой функции, которая, очевидно, технически независима от них. Типичное использование было бы уведомлениями об обновлении, но также и статистикой использования - который запускается в плескании пользы Вам.

большинство наших пользователей как наши продукты, и им нравимся мы. В том сценарии я не думаю, больше всего возразил бы против функции, которая приносит пользу нам, не вредя им.

<час>

Вызов домой не является оскорбительным. Вызов домой для создания дополнительного маркера за счет пользовательской конфиденциальности.

1
ответ дан 30 November 2019 в 17:17
поделиться

Это действительно зависит от того, доверяете ли Вы своим клиентам, и сколько значения Вы добираетесь от усилия.

Некоторые люди будут использовать Ваш код неуместно. Не имеет значения, что Вы делаете - если это будет ценно, кто-то украдет его. Они не потерянные продажи, тем не менее, и не думают, что они. Расходование $1 миллиона, пытаясь остановить это просто составит $1 миллион без ROI.

существуют клиенты, которые заплатят за некоторых, но не все, их использования. Обычно , это - контроль. Как только они находят свое сверхиспользование, они заплатят за дополнительную поддержку. Способность контролировать собственное соблюдение ценна оба клиенту (кто хочет избежать судебных издержек), и Вам (поскольку это приведет к надлежащим купленным лицензиям). Расходование $1 миллиона для включения самосоответствия приведет к доходу от инвестиций (хотя, сколько из ROI будет зависеть от приложения, clientГЁle, и сколько они злоупотребляют случайно). Проблема здесь находится в определении ROI - будет трудно определить количество.

Быть уверенными Вы смотрите на это реалистично. Следуйте за деньгами, которые можно получить, не пытайтесь преследовать пиратов, деньги которых Вы не могли получить так или иначе. Это просто выбрасывает деньги, которые могли быть потрачены на улучшение продукта для фактических клиентов оплаты, где Вы могли получить своего рода ROI.

1
ответ дан 30 November 2019 в 17:17
поделиться

Вот некоторые инструкции.

Телефон размещают для проверения соответствия лицензии:

  • Только во время установки.
  • Интернет Предложения или почтовая опция.
  • Использование односторонний хеш идентификатора.

Телефон размещают для проверки на обновления:

  • Только с полномочиями пользователя.
  • Использование односторонний хеш идентификатора при необходимости.

Телефон размещают для входа катастрофических отказов:

  • Только с полномочиями пользователя.
  • Использование односторонний хеш идентификатора при необходимости.
  • Позволяют пользователю просматривать передаваемую информацию.

Телефон размещают для передачи статистической информации:

  • Только с полномочиями пользователя.
  • Использование односторонний хеш идентификатора при необходимости.
  • Позволяют пользователю просматривать передаваемую информацию.
  • Шифруют передаваемую информацию.
1
ответ дан 30 November 2019 в 17:17
поделиться

Приложения "фон [луг] домой" являются очень общим обозначением, главным образом используемым довольно истеричным способом ("телефоны iPhone домой!!", "Microsoft Vista звонит домой!!")

Любое программное обеспечение, которое проверяет на обновления, "звонит домой". Я просто не забочусь, делает ли это это.

С другой стороны, пробное программное обеспечение (рекламное программное обеспечение/шпионское ПО/вирусы), которое отправляет, как можно больше информации проблема.

я предполагаю, что это зависит от..

  • .. какие данные отправляются
  • .. если пользователь знает о том, какие данные отправляются

, Искрятся (платформа обновления приложения OS X) имеет способность отправить некоторую информацию о базовой системе при проверке на обновления.

Почти каждое приложение я видел, что использование Искриться имеет опцию, названную, "Отправляют анонимную информацию о системе" рядом с "Проверкой на обновления". Что еще более важно, это имеет кнопку "Show what information is sent". Данные, передает обратно, материал как тип ЦП (Intel или PPC), модель Mac (Mabook, MacBook Pro и т.д.), количество центральных процессоров, скорости ЦП.

, Который является большой системой - большинство людей просто не заботится, и она дает разработчикам, обзор того, какие системные люди используют свое приложение на. Если Вы параноики об этом, можно или отключить проверку обновления, или если Вы хотите автоматические обновления, говорите ему не отправлять информацию (кроме Вашего IP-адреса, очевидно)

0
ответ дан 30 November 2019 в 17:17
поделиться

Информированное согласие, где информированное средство, которое тип, частоту и содержание информации Вы будете отправлять, сказано клиенту, является действительно единственной разумной опцией, еще Вы начинаете тесно напоминать вредоносного автора. Люди узнают и будут не любить Вас много, если Вы пытались осуществить его украдкой. Вы, вероятно, можете и должны представить его как средство улучшить обслуживание, хотя, всем нравится программное обеспечение, которое сообщает об ошибках отдельно.

Это означает, что Вы не можете полагаться на это, чтобы быть Вашим механизмом обнаружения обмана, но, учитывая, что существует много денег на таблице, можно быть в состоянии по контракту поместить некоторые выборочные проверки. Например, Вы могли зарегистрировать локально данные, которые Вы иначе отправите и пойдете посмотреть на него в проверках. Я не думаю, что Вы вынуждены объявить локальную регистрацию информации об использовании (IANAL, YMMV, WTF, барбекю)

11
ответ дан 30 November 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: