我正在寻找一种方法来启动一个具有替代系统时间的应用程序。基本上我使用的一个测试程序有一个错误(它确实是一个错误),它不再让它在1月29日之后运行。将我的系统时间设置为前几天固定工作问题,应用程序正常工作,但是我的其他一些应用程序现在无法正常工作。
作为一般性问题(我可以看到自己将其用于其他事情),是否可以启动应用程序并让它认为有一个备用系统时间?
具体来说,我正在运行Mac OS 10.7.2,并且我尝试使用系统时间而不是设置时启动MouseShare。
答案 0 :(得分:2)
好的,我找到了解决方案。有一个名为libfaketime的漂亮的图书馆,在“Unix& amp; Linux通过this发布的堆栈交换。
在OSX上实现它的最简单方法:
$ cd $HOME/Library/
$ git clone clone git://github.com/wolfcw/libfaketime.git
$ cd libfaketime/src/
$ make -f Makefile.MacOS
$ export DYLD_FORCE_FLAT_NAMESPACE=1
$ export DYLD_INSERT_LIBRARIES=/Users/<USERNAME>/Library/libfaketime/src/libfaketime.dylib.1
$ export FAKETIME="@2012-01-01 01:01:01"
验证它是否正常运行(即日期是1月1日)
$ date
Sun Jan 1 01:01:01 CST 2012
一切都很好!
$ open /Applications/ShareMouse.app/
28天17小时应该是好的(即直到它看到系统时间为2012-01-29 17:00:00,不要问我他们怎么没看到这个bug来了?)
我无法修改应用程序Info.plist
的工作方法(如README.OSX中所述)
答案 1 :(得分:0)
由于新的OSX El Capitan具有禁用某些系统实用程序的严格功能,您需要从OSX恢复模式禁用csrutil,否则libfaketime将无法运行。
答案 2 :(得分:-1)
通常这会被视为安全问题。解决这个问题的一种方法是在虚拟机中运行。