我可以用密码保护应用程序吗?

时间:2011-04-16 15:07:16

标签: c++ c security macos

我有一个我不希望人们访问的应用程序,除非得到明确许可(通过密码)。更具体地说,除非用户输入密码,否则该应用程序需要在一天中的某些时段被“锁定”。

检查时间的能力很简单。锁定应用程序的能力是我不知道该怎么做。需要这样做的原因是公司不信任用户注销,也不希望任何未经授权的访问应用程序。为了以防万一,这是一种最后的衡量标准。

我没有编写应用程序,所以我不能在其中嵌入密码。该机器只有一个用户,我不想创建其他用户。我的用户也是一名管理员,因此大多数选择使用操作系统提供安全性的选项都不会起作用。

关于如何实现这一目标的任何想法? 我正在处理Mac OS X,但更喜欢独立于操作系统的解决方案。任何涉及CC++的解决方案都是受欢迎的。

谢谢!

3 个答案:

答案 0 :(得分:6)

如何将应用程序嵌入加密磁盘映像包中?只要使用它的唯一用户永远不会从那里复制它并在之后正确卸载捆绑包,我认为它可以实现你想要的:

  1. 使用“磁盘工具”创建新的加密磁盘映像(DMG)(这允许您输入密码),将其存储在用户主目录中的任何位置。
  2. 安装DMG并将您要保护的应用程序放在其中
  3. 在已安装的DMG中为应用创建别名并将其放在桌面上
  4. 卸载DMG
  5. 之后,当用户双击桌面上的别名时,系统会提示用户输入DMG的密码。如果正确,则安装DMG并自动直接启动应用程序。

    之后自动卸载也许您可以编写使用diskutil shell命令的内容,如下所示:> diskutil unmount /Volumes/DMG_NAME

    您需要做的就是:

    • 从系统中删除该应用的所有未加密副本
    • 显式地通知您的用户在使用该应用程序时卸载DMG(或使用此脚本自动执行)
    • 向你的同伴StackOverflowers解释你正在解决的实际问题。 Msw有一点意见,我希望你能详细说明一下。

答案 1 :(得分:0)

显然,对于这种设置,没有什么是100%安全的,但对于临时用户,您可以使用密码加密应用程序,然后编写启动应用程序,在输入密码时解密并启动应用程序,并删除申请退出时。

答案 2 :(得分:0)

#include <stdio.h>
#include <string.h>

char buf[BUFSIZ]
puts('what is the secret password? ');
fgets(buf, BUFSIZ, stdin);
if (strcmp('secret', buf)) exit(1);

应该与您可能编码的任何其他内容一样有效,并且具有简单性和可移植性的优势。