有没有办法加密Windows窗体应用程序的配置文件?
我在google上找到的所有内容都依赖于“aspnet_regiis.exe”,但我想为桌面应用程序执行此操作?
答案 0 :(得分:4)
你想要完成什么?
请记住,程序本身需要解密文件,在您的情况下,EXE文件将位于最终用户计算机上。
因此,任何有权访问配置文件的人几乎肯定都会拥有EXE,并且无法阻止他们阅读它。
如果您要存储最终用户的密码并希望阻止其他人阅读,您可以在该文件的路径上调用File.Encrypt
。请注意,这在XP Home中不起作用。
您还可以使用System.Security.dll中的ProtectedData
类来加密字节数组,以便只有登录用户可以对其进行解密,然后将该字节数组存储在配置文件中。 (这将适用于XP home,AFAIK)
答案 1 :(得分:1)
答案 2 :(得分:0)
回应你的评论:
无法阻止确定的用户。如果用户努力尝试,则可以执行 nothing 以防止他执行其计算机上的应用程序能够执行的操作。你可以把它变得非常困难,但并非不可能。
您到底害怕用户会做什么?
如果您只希望他能够看到某些数据,您可以使用数据库权限或存储过程,或者使用Web服务替换数据库。
如果您不希望他能够复制数据,那么就没有100%的解决方案。
你可以对组件进行模糊处理,但没有混淆器是完全完美的
您可以添加if (Debugger.IsAttached) Environment.FailFast()
之类的行,但用户可以使用Reflexil删除它们
您可以使用汇编文件的哈希值作为加密密钥的一部分,但是用户可以使用Reflexil将其替换为硬编码的字节数组。
如果使用Web服务替换数据库,则可以修改Web服务以检测可疑请求,但用户可以在请求之间等待和/或使用不同的计算机。
您可以返回图像而不是数据,但用户可以使用OCR。
简而言之,你可以让它变得非常困难和耗时,但你不能让它变得不可能。
答案 3 :(得分:0)
我根据您的需要应用了可行的解决方案。这是它的链接。
http://www.ardabasoglu.com/1/post/2010/12/encrypting-the-windows-forms-application-settings.html