Day 3325 ownCloud Permission Denied in mappedlocal.php

尝试了一下私有云ownCloud,版本为8.0,OS为Windows Server 2008 R2,一开始配置很顺利,但实际用客户端传文件时,稍微开始一会儿就出现Internal Server Error的提示,去看系统的日志,可以发现有类似这样的php错误出现(非实际错误信息,为转帖):

unlink(C:\inetpub\wwwroot\owncloud\data/jerome/files-trashbin/files/owncloudusermanual.pdf.d1423825653): Permission denied at C:\inetpub\wwwroot\owncloud\lib\private\files\storage\mappedlocal.php#270

Workaround方案(来自此帖):

下载7.0.4版本的ownCloud,将/lib/private/files/storage/mappedlocal.php覆盖掉即可。

Day 3318 为啥我的微信Access Token有效期那么短

最近给单位做了一个微信活动,由于要求甚多,现成的服务无法满足需求,最后决定从头开始开发。

由于自己的PHP、HTML和JS都是半瓶子醋(JS更是按滴算),所以编写代码的过程中遇到了不少磕磕绊绊。感谢这个信息便利的时代,大部分问题在查找资料后都得到了解决,最后活动于前两天正式上线了,除了一开始一点小意外,运行还算正常。

但是有一个问题从一开始就困扰着自己:调用微信的API需要先用微信公众号的APP ID和Secret向微信服务器申请Access Token,然后用这个Token去调用API,官方的文档中指出目前的Access Token有效期是7200秒(2小时),但是调试时Token的有效期一直在10分钟左右摇摆,活动上线后变得更加糟糕,几乎每7-8分钟就会在日志中看到某个Session下出现Token超时的记录。

最后终于找到了问题的原因,很蠢:我将Access Token理解成了一个per user而不是per APP的令牌,代码中为每个进入的用户都重复申请了token,并存储在了缓存中,于是一个新token没有失效前,如果有另一个用户进入了活动,那么这个跟公众号关联的token就会被刷新,其它用户再使用之前的token访问时,由于旧令牌已经失效,又会再次进行申请,于是陷入了恶性循环。

直到这时我才明白微信API文档中为什么要让一个「中控服务器」对Token进行存储,因为Access Token(和JS-SDK Ticket)是与公众号、而不是微信用户相关联的。

现在的问题是:由于多设计了这些没有必要的东西,数据表变得很庞大(没错,为了调用微信的JS-SDK我还为每个用户存储了JS Ticket,这同样也导致了毫无意义的频繁刷新),所以准备如果本次活动期间不出问题,就等到结束后对所有内容进行重写。

Day 3287 Touka’s Hosts file Replacer

toukahostsreplacer

之前受人恩惠,算是回报,同时也出于保密,以往这个应用叫什么就免提了。

功能有二:

1、从指定URL获取hosts文件,并通过以下三种方式更新本机hosts文件:直接覆盖、按行数范围修改、追加在原始文件后面。
2、将本机或远程hosts文件导出为UNIX换行符(LF)格式。

为安全起见,没有设计保存最后一次使用的hosts地址功能。

注:本程序需要.Net Framework 4.0的支持,如提示「应用程序初始化失败」,请至微软官方下载安装。

更新记录:

1.0.5.0 增加直接覆盖本地文件的选项、细节修正
1.0.4.0 初始(?)版本

下载地址

Day 3271 提取百度安全登录控件

最近单位被百度的加V推广缠上了,真是生财有道啊。

话说回来,登录百度推广页面的时候居然要安装一个什么「安全登录控件」,出于对百度系产品的不信任,对支付宝的「安全登录控件」举一反三即可安装这个密码控件:

  1. 点击需要下载控件的页面中出现的「请点击安装密码控件」下载安装程序。
  2. 使用7-zip将安装程序解包,提取其中的npBaiduSafeInput.dll,IE浏览器使用regsvr32进行注册,Chrome放到与chrome.exe同级的Plugins目录下。
  3. Chrome还需要在chrome://plugins下对BaiduSafeInput勾选Always Allowed(如果要区分domain设置exception请自行研究)。

Day 3269 Windows 7修改网络名称

modify_network_name看厌了每次接入新网络或NIC的时候系统自动分配的「网络2」「网络3」了吗?

在「网络与共享中心」里点击网络前的图标,即可对网络的名称和图标进行修改,听起来好简单的技巧,今天才刚刚学会。

注1:弹出的对话框下方还有一个「合并或删除网络位置」,可以对过去产生已经不用的的「网络」配置进行删除;

注2:「未识别的网络」不能更改名称或图标;

注3:图中使用的无线网络图标存在于:%SystemRoot%\system32\pnidui.dll

Day 3268 提取支付宝「真正的」安全控件

本文内容来自:http://bbs.kafan.cn/thread-1520630-1-1.html,以下只包含其中的手工操作部分:

  1. 下载官方安装包:https://download.alipay.com/sec/edit/aliedit.exe
  2. 使用7-zip打开安装包。
  3. 对于IE浏览器,提取以下6个文件:Alidcp.dll、aliedit.dll、npalidcp.dll、npaliedit.dll、npAlipaydhc.dll、npAliSecCtrl.dll,将这些文件放置到任意目录(原文要求目录名为aliedit,其实可以随意,我放到了alipay目录下一样用),然后使用regsvr32注册之(需要管理员权限cmd,命令行例:regsvr32 c:\alipay\Alidcp.dll),即可使用。
  4. 对于非IE内核浏览器(例如Chrome),提取以下3个文件:npalidcp.dll、npaliedit.dll、npAliSecCtrl.dll。由于手头只有Chrome浏览器,故仅对此进行实验,经确认,将以上文件提取到chrome.exe同级目录下的Plugins目录(没有则新建)中即可,以能在chrome://plugins/中看到Alipay webmod control、Alipay security control、Alipay Security Control 3为准,并将这三个插件的Always Allowed(总是允许)打勾即可使用。

可能有人要问为什么不用官方的一键安装,方便又快捷,那是因为原版的安装程序不仅会将需要的安全控件装进来,还会按照用户协议安装对本机流量进行监视的后台服务,最明显的特征就是会有一个一直吃CPU的Alipaybsm.exe和其守护进程AlipaySecSvc.exe。

关于其监视用户的嫌疑,可搜索关键字【alipaybsm 监视】查找相应文章进行阅读。

至于支付宝方面做贼心虚的表现,可以从安装程序附带的用户协议的变动看出来,支付宝官方有一份《支付宝安全控件安装许可协议》点击查看本地截图,截图时间2015年1月13日),其中列举了一条极具争议的内容:

3. 支付宝有权通过本软件收集您的相关信息(包括但不限于URL、登录IP、登录阿里旺旺ID)并有权将其传递给本公司的关联公司或阿里巴巴集团旗下的其他公司。

包括但不限于……嗯。

之前安装的时候也看到过这句话,不知从什么时候起,这句话从本地的安装程序中消失了,但在线版还是保留着的。

虽然理论上用户点击【我同意】时,同意的应该是不包含这句话的本地协议,但一来镇上的EULA对最终用户本来就没有什么保护效力,二来即使本地协议中也有这么一句话:

您通过点击确认本协议或以其他方式选择接受本协议,即表示您已与支付宝达成协议并同意接受本协议的全部约定内容。

其他方式是什么呢?大概解释权在支付宝公司方面吧。

就更别提在线版中的文字游戏了:

您对以上四点已有充分的理解并明白因此可能导致的相应后果对您使用本软件所产生的一切后果,支付宝(中国)网络技术有限公司(www.alipay.com)不承担任何责任。

看到红色的句号了吗?那个句号的意思是,两句话是独立的,并不是说因为「以上四点」产生的后果支付宝不承担责任,而是你用了这个软件产生的任何后果支付宝才不承担任何责任呢☆

说到底,毕竟EULA存在的意义就是写得冗长到几乎没有人愿意去读,但实际上已经在长长的文句中给用户下好了绊子,而且算准了用户一定会点击同意。

Day 3260 用系统提供的功能绕过UAC以交互方式启动应用程序

饭否@谜厎(就是锐风,太空饭否的合作+主要开发者之一)曾在我吐槽软件限制策略不管用时提到让特定程序(例如Sublime Text)绕过NT 6.0以后的用户账户控制(User Account Control,UAC)来修改hosts的方法,经过搜索和实践,通过系统本身提供的功能、用正常途径(其它高门槛途径还包括注入系统进程绕过UAC等,本文不做讨论)主要包含以下两种方式:

  1. 使用Microsoft Application Compatibility Toolkit为程序打RunAsInvoker的兼容性补丁
  2. 使用「任务计划程序」建立特定计划任务

本文主要展示两种方式如何操作,以及为什么第一种方式实际上对本需求没有效果。

本文操作环境为Windows 7 x64 with SP1。

继续阅读 “Day 3260 用系统提供的功能绕过UAC以交互方式启动应用程序”

Day 3251 Windows 7的启动画面变成Vista的滚动条

前阵子家里的台式机SSD(Samsung 840EVO)出了问题,返修期间在本地硬盘的剩余空间上做了个系统,等返修回来之后,用三星官方的Data Migration Software把系统迁移到了SSD上。

迁移过程十分顺利,但重启的时候发现一个小插曲:系统的启动画面(就是那个显示「正在启动Windows」然后四颗光玉大团结(啥)的画面)变成了显示英文的「Starting Windows」然后一闪出现了Vista风格的绿色滚动条,接着一闪正常进入系统,虽然不影响使用,但是看起来总感觉怪怪的。

搜索得到以下修复方法,测试可用:

  1. 以管理员权限启动一个cmd;
  2. 使用以下命令:bcdedit /set {current} locale zh-CN,提示「操作成功完成」即可。
  3. 不管事的话可以再试试:bcdboot %WinDir% /l zh-CN

猜想原因可能是数据迁移软件没有对NTLDR的语言进行判断,直接写入了英文版的参数所致。

启动器所支持的语言除了en-US和zh-CN还有很多,可手工进入C:\Boot进行查看。

Day 3247 关于为啥不用QQ国际版而必须使用新版

在上篇日志中,hcl提到禁止QQ更新不如直接换打扰更少的国际版。

其实国际版我有在用,家里装的就是,但国际版不仅精简掉了广告,还有很多功能,例如群管理相关的功能。

对于同一个群,不同版本的QQ提供的设置如下(看到群号也不要紧我是不会通过的(喂): 继续阅读 “Day 3247 关于为啥不用QQ国际版而必须使用新版”

Day 3243 使用本地安全策略禁止QQ自动更新

QQ自从摒弃了年份版本号后,变成了6.x之类的数字版本号,但是更新也愈加频繁,似乎还会带进来一些流氓软件之类的东西。

有很多方法禁止QQ的自动更新组件运行,诸如删掉后建立同名文件夹之类,这里要介绍的是使用系统级的「本地安全策略」来达到目的:

  1. 如果QQ正在运行,关闭它。
  2. Win+R,输入secpool.msc打开「本地安全策略」控制台;
  3. 展开「软件限制策略」->「其它规则」;
  4. 在右边的列表中单击右键,选择「新建路径规则」;
  5. 在「路径」中分三次填写以下路径(目录有别则自行修正),并将「安全级别」设置为「不允许」:
    1、C:\Program Files\Tencent\QQ\Bin\SetupEx\QQSetupEx.exe
    2、C:\Program Files\Tencent\QQ\QQProtect\Bin\QQProtectUpd.exe
    3、C:\Program Files\Tencent\QQ\txupd.exe
  6. 规则已即刻生效,重新启动QQ即可。