Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 拒绝用户对注册表值的权限?_.net_Windows_Vb.net_Registry_User Permissions - Fatal编程技术网

.net 拒绝用户对注册表值的权限?

.net 拒绝用户对注册表值的权限?,.net,windows,vb.net,registry,user-permissions,.net,Windows,Vb.net,Registry,User Permissions,我正在尝试为我的应用程序创建一个基本的试用期方法,添加一个不可见的注册表项,并拒绝用户删除该值,但我不知道如何像“SetACL.exe”工具那样拒绝用户权限 这是我的代码: Dim _0day As String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("0")) ' MA== My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Softwar

我正在尝试为我的应用程序创建一个基本的试用期方法,添加一个不可见的注册表项,并拒绝用户删除该值,但我不知道如何像“SetACL.exe”工具那样拒绝用户权限

这是我的代码:

    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()

正如建议的那样,与其创建一个密钥来表示您的应用程序在用户机器上的安装是试用版,为什么不使用一个具有有效加密值的密钥来标识该应用程序已获得许可?这样,如果用户删除或修改了密钥,您的应用程序将以试用模式运行


并确保加密的密钥值对于用户的机器是唯一的,这样当密钥被复制到另一台机器时,它将不起作用。

正如建议一样,不要创建一个密钥来表示您的应用程序在用户机器上的安装是试用的,为什么不提供一个具有有效加密值的密钥,以将应用程序标识为已授权应用程序?这样,如果用户删除或修改了密钥,您的应用程序将以试用模式运行


并确保加密的密钥值对于用户的机器是唯一的,这样当密钥复制到另一台机器时,它将无法工作。

将注册表值设置为试用开始的日期,并结合硬件Id进行加密


使许可值超过日期(如1900年1月1日)。

将注册表值设置为试用开始的日期,与硬件Id结合,并进行加密


将许可值设置为过期(如1900年1月1日)。

谢谢您的回答,但您可以扩展此评论?:“为什么不使用具有有效加密值的密钥来标识许可应用?”我可以理解英语,但即使使用googletranslate,我也不太了解,你确定我可以根据你的建议衡量试用期的天数吗?您的建议似乎是创建一个唯一的密钥(例如,基于硬件ID的MD5),并且不更改该值,但是我如何度量经过的天数呢?对不起。我想我错过了关于试用期的部分。我认为你的应用程序要么在完全运行,要么在功能有限的试用模式下运行。无论如何,您可以在安装过程中创建包含唯一计算机/硬件id的加密密钥值以及安装日期。如果密钥丢失或被修改,你的应用程序应该能够检测并相应地采取行动(如拒绝运行或类似的事情)。糟糕的是,我的应用程序是作为独立的便携式分发的,但感谢安装人员的想法。感谢您的回答,但您可以扩展此评论:“为什么不提供一个具有有效加密值的密钥来识别许可的应用程序?”,我懂英语,但我不太明白,即使使用googletranslate,你确定我可以测量试用期的天数吗?你的建议似乎是一个唯一的密钥(例如,基于硬件ID的MD5)不要更改值,但我如何测量经过的天数?抱歉。我想我错过了关于试用期的部分。我认为你的应用程序要么以完整模式运行,要么以有限功能的试用模式运行。无论如何,你可以做的是在安装过程中,创建包含唯一机器/硬件id的加密密钥值,以及insta延迟日期。如果密钥丢失或被修改,你的应用程序应该能够检测到并相应地采取行动(比如拒绝运行或类似的事情)。不好的是我的应用程序是作为独立的便携程序分发的,但感谢安装者的这一想法。