假设我的WinApp中有一个String字段,如下所示:
公共字符串UsingTheApplicationFrom =“尚未”;
现在,在我的应用程序的第一次运行中,我想永远改变字段的值。例如:UsingTheApplicationFrom = "Friday, January 21, 2011";
在C# WinApp有可能吗?
你能指点我吗?
编辑:
我不想使用数据库、文件、注册表或其他什么东西。
发布于 2011-01-21 15:20:29
您正在寻找“只有第一个系统(首次运行应用程序)才能使用我的应用程序的应用程序的安全性”。我想你的意思是,你出售的软件的每一份一次只能安装在一台电脑上。
你有两个问题要解决:
您有几个选项可用于唯一标识符,但这些选项都不是很好。当客户更改计算机硬件、计算机故障或希望将软件从一台计算机转移到另一台计算机时,请为客户的支持请求做好准备。计算唯一标识符的一个好看的方法是这篇文章 (镜像链路,因为代码项目文章不可用)。
我建议只将此标识符作为字符串存储在app.config文件中(使用Properties.Settings,从此链接开始获取更多信息)。它在纯文本中是可见的,但是如果它看起来像“4876-8DB5-EE85-69D3-FE52-8CF7-395D-2e9”,那么一个未经许可的用户如何知道为他们的机器将它更改为什么值呢?如果不匹配,请将它们指向您的网站/电话以获得支持。
你仍然有决定什么时候设置这个值的问题--我主张把它设置为安装程序的一部分,而不是在程序第一次运行时保存它,因为那时你仍然有一个问题要确定程序何时第一次运行。安装程序可能需要某种注册代码和与中央授权服务器通信的方法。(是的,这确实变得很复杂-你认为人们会有多大的决心黑掉你的许可证?)
发布于 2011-01-21 14:50:36
我只是在猜测,但我认为“永远”的意思是“永远”。您可以轻松地在应用程序的App.config中创建一个键,并在第一次运行时填充它。
<add key="UsingTheApplicationForm" value="Not Yet"/>在第一次运行时,更新到-
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["UsingTheApplicationForm"].Value = DateTime.Now.ToShortDateString();
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");在第二次运行时,检查键值是否等于“尚未”。如果不是,这意味着这不是第一次运行。
发布于 2011-01-21 14:37:05
我认为您可能希望使用DateTime,特别是DateTime.Now --不过,对于这个问题的评论,我不太确定。
所以,就像:
UsingTheApplicationForm = String.Format("{0:dddd, MMMM d, yyyy}", DateTime.Now); 虽然“总是”这个部分很让人困惑,但我只想购买我自己的翻译,其中的always = each startup。
我还猜想,给定UsingTheApplicationForm的属性/变量名,这个值是指示性字段,而不是描述性字段;出于这个原因,可能只是使用DateTime.Now而不使用任何格式,甚至只是一个布尔值(取决于您的情况)是否合适?
编辑:
有关使用此方法或任何其他方法以及为下一次运行保存此数据的信息,请参阅下列问题和答案.
https://stackoverflow.com/questions/4759979
复制相似问题