我希望一个exe文件不能复制或从Windows文件系统剪切粘贴到某处。该exe是在C#。这必须是在只有一台PC。我使用过FileSystemWatcher、NSIS、Clipboard。但我需要检测是否正在复制该文件。我也见过“防止”(http:free-download-blog.comdisable-cut-paste-copy-delete-rename-functions-using-prevent),但我只需要防止复制或剪切特定的exe。任何指针或想法都会有帮助。
bjp0bcyl1#
正如其他人所建议的那样,你不能这么容易地禁用复制/剪切行为。另一种方法是禁止执行复制的版本。在您的可执行文件中,您可以检查许多内容,如:
你甚至可以使用Windows注册表项来防止文件被执行超过一次(如果已经有一个不启动)。这不会是完美的,因为任何实验用户都可以调整它,假设他们正在寻找它。但根据你的用户配置文件,这可能是足够的。
qacovj5a2#
如果您需要exe可执行,则需要允许将其加载到内存中。一旦您这样做,任何人都可以使用ReadFile将其读取到内存中,然后使用WriteFile将其写入任意位置。不涉及shell可检测的复制。一本好读物:Raymond's post and its comments on preventing copying.
ubof19bj3#
好吧,这是一个难题。即使你让explorer.exe禁用剪切和粘贴,是什么阻止用户使用命令窗口呢?还是阻止用户编写自己的exe来做这件事呢?在linux中引导并阅读它呢?不过,你有几个选项(将有更多,最有可能),你可以尝试:
以及一些常见的选项,如:
不过这并不能保证。例如,如果你期望他们能够执行它,但不能复制它,你可能会卡住。
ioekq8ef4#
任何本地管理员都可以撤销你为防止复制而做的任何事情。我几乎可以保证你提到的那个页面上的程序依赖于一个服务或后台进程来防止复制和粘贴,因此很容易被规避。如果你的用户处于一个封闭的环境中,没有一个人是管理员,他们对自己的电脑的权限非常有限,那么你就有机会。
3mpgtkmj5#
如果你可以完全阻止资源管理器复制或移动文件,那么你所需要的就是一个第三方软件来复制文件(但是要确保它可以过滤文件扩展名),例如复制处理程序
0kjbasz66#
在计算机中设置环境变量在代码中添加检查if(ENVIRONMENT Variable=='Same as defined')//执行代码else //暂停执行
6条答案
按热度按时间bjp0bcyl1#
正如其他人所建议的那样,你不能这么容易地禁用复制/剪切行为。
另一种方法是禁止执行复制的版本。
在您的可执行文件中,您可以检查许多内容,如:
你甚至可以使用Windows注册表项来防止文件被执行超过一次(如果已经有一个不启动)。这不会是完美的,因为任何实验用户都可以调整它,假设他们正在寻找它。但根据你的用户配置文件,这可能是足够的。
qacovj5a2#
如果您需要exe可执行,则需要允许将其加载到内存中。一旦您这样做,任何人都可以使用ReadFile将其读取到内存中,然后使用WriteFile将其写入任意位置。不涉及shell可检测的复制。
一本好读物:Raymond's post and its comments on preventing copying.
ubof19bj3#
好吧,这是一个难题。即使你让explorer.exe禁用剪切和粘贴,是什么阻止用户使用命令窗口呢?还是阻止用户编写自己的exe来做这件事呢?在linux中引导并阅读它呢?
不过,你有几个选项(将有更多,最有可能),你可以尝试:
以及一些常见的选项,如:
不过这并不能保证。例如,如果你期望他们能够执行它,但不能复制它,你可能会卡住。
ioekq8ef4#
任何本地管理员都可以撤销你为防止复制而做的任何事情。我几乎可以保证你提到的那个页面上的程序依赖于一个服务或后台进程来防止复制和粘贴,因此很容易被规避。如果你的用户处于一个封闭的环境中,没有一个人是管理员,他们对自己的电脑的权限非常有限,那么你就有机会。
3mpgtkmj5#
如果你可以完全阻止资源管理器复制或移动文件,那么你所需要的就是一个第三方软件来复制文件(但是要确保它可以过滤文件扩展名),例如复制处理程序
0kjbasz66#
在计算机中设置环境变量
在代码中添加检查if(ENVIRONMENT Variable=='Same as defined')//执行代码else //暂停执行