【问题标题】:Make a file read/write accessible only from within my application使文件只能从我的应用程序中读取/写入
【发布时间】:2016-01-03 18:12:13
【问题描述】:

我正在使用 C# 和 MS-Access 创建一个新的数据库应用程序,我想让数据库文件只能在我的应用程序中进行(读/写)操作,这样用户就无法打开来自应用程序外部的文件,但应用程序具有对数据库文件的完全访问权限,或者更好的方法是为数据库的根文件夹设置此权限。 有人可能会问“为什么不给数据库设置一个密码?” 我的回答是我希望根文件夹完全无法访问,因此用户不会知道我正在使用的数据库类型,因为我将更改它的文件扩展名。 据我所知,Windows 操作系统使用 NTFS 权限 -Groups- 使文件夹只能供一组组访问,例如(受信任的安装程序、系统、用户...) 我可以使用 NTFS 权限实现我的目标,还是有更好的方法来处理这个问题?

【问题讨论】:

  • 这是不可能的(如果您的程序可以修改它,用户 [具有管理员权限] 也可以修改它),您唯一能做的就是将其保存在其他位置文件(例如在 %APPDATA%[...] 中),以便用户无法轻松访问它。
  • @TehRialHolk 由于存在数据丢失的危险,我不能将其保存在其他地方,此外,在程序的第一次初始化期间,我让用户能够选择文件夹来保存数据库文件进入,这样他就能准确地知道路径

标签: c# .net permissions ntfs


【解决方案1】:

我使用低级文件读写操作将固定长度的加密字节添加到文件的开头,我的应用程序在执行时删除了字节并给了我实际的文件,我阻止了启动菜单和快捷键和上下文菜单使用windows api,所以只有我的应用程序可以访问它,而且我在应用程序终止时启用了 windows 的东西,并再次加密了数据库,所以它对于另一个启用访问的应用程序是不可读的。

【讨论】:

  • 你能详细说说你是怎么做到的吗?
  • 为了访问,您可以在一个变量中读取整个文件并将其附加到变量中,例如 variable=length32bytes+filecontent 并创建新文件并将内容放入该文件并将其重命名为实际文件名。有关禁用键和启动更改的内容,您可以在此处阅读:stackoverflow.com/questions/4940796/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多