2013-04-30 113 views
0

我试图做一个基本的试用期的方法,我的应用程序添加一个不可见的注册表项,也拒绝用户删除该值,但我不知道如何拒绝用户权限,如“SetACL.exe”工具。拒绝用户对reg值的权限?

这是我的代码:

Dim _0day As String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("0")) ' MA== 


     My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\MyApplication", _ 
             "¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?", _ 
             _0day, _ 
             Microsoft.Win32.RegistryValueKind.String) 

    ' Next step: 
    ' Deny user acces (Delete/Modify) to that value (not to the entire key). 

更新:

试过,但它什么都不做,它运行没有错误,但不否认的权限。

Dim f As New RegistryPermission(RegistryPermissionAccess.NoAccess, "HKEY_CURRENT_USER\Software\MyApplication") 
f.Deny() 

回答

2

正如建议,而不是创建一个键表示用户的机器上试用您的应用程序的安装,为什么不把钥匙的存在与有效的加密值,以确定应用程序的许可?这样,如果用户删除或修改了密钥,您的应用将以试用模式运行。

,并确保加密密钥值是唯一到用户的机器,这样当钥匙被复制到另一台机器,它不会工作。

+0

感谢的答案,但你可以扩展此评论:“为什么不把用有效的加密值一键的存在,以确定应用程序的许可?”,我能听懂英语,但我不通情达理的多,即使使用googletranslate,你确定你的建议,我可以衡量一段时间的试用期吗?您的建议似乎会生成一个唯一的密钥(例如基于硬件ID的MD5),并且不会更改该值,但是接下来我如何衡量已过去的日期? – ElektroStudios 2013-04-30 18:30:41

+0

对不起。我想我错过了那段关于试用期的部分。我认为你的应用程序要么全部运行,要么试用模式功能有限。无论如何,你可以做的是在安装过程中,创建包含唯一机器/硬件ID的加密密钥值以及安装日期。如果键丢失或修改,您的应用程序应该能够检测并采取相应的行动(如拒绝运行或类似的东西)。 – ajakblackgoat 2013-04-30 19:02:27

+0

不好的一面是我的应用程序是作为独立的可移植程序分发的,但是感谢安装程序的这个想法。 – ElektroStudios 2013-04-30 19:05:00

1

使注册表值成为试用开始的日期,并结合硬件Id并加密。

使许可值过去的日期(如1/1/1900)。