最近是有一个需求而不得不使用 PowerShell 来操作注册表,搜索了一下,有提供常规的命令方式,也有使用 .net framework 的实现,最后看到一个比较简单的方式,像使用文件系统的文件夹一样,比较适合我这样的懒人。
即我们可以以 PSDrive 的形式来访问注册表。
首先,输入 Get-PSDrive 命令可以获取当前提供的 PSDrive,感觉好厉害的样子。
我们可以像文件夹一样,一级级地进入,当然根目录别忘记了分号,例如 cd hklm: 。到达我们指定的路径后,就可以使用 New-Item 和 Set-ItemProperty 命令来新增项和键值了。
Set-ItemProperty .\FileLogger -name AllLogs -value Trace
意思就是说,为 FileLogger 这个项,创建一个键,名称为 AllLogs,值是 Trace。
够简单,够直接。
我们在网上经常可以看到如何退出 S Mode,但是对于开发团队来说,想要调试 S Mode 下的问题,就比较麻烦了。
在过去,只能是通过重装系统的方式,这样不是最优解。
无意间,让我发现了一个非正式的做法,供大家把玩。由于微软官方并没有正式承诺,所以只用来快速验证 bug,可能微软将来某一个版本就发生了调整。
HKLM\System\CurrentControlSet\Control\CI\Policy,修改配置项 SkuPolicyRequired,从 0 改成 1 再重启。
重启后,系统会要求使用 Microsoft ID 来登录系统,大家记得去注册一个哈,不然是无法使用 S Mode 模式的。
最近发现 docker 里的一个应用无法启动,总是报告 “failed to initialize logging driver”提示,在网上搜索了一下,找到了解决方法。对于我的这个案例来说,就是由于 lock 文件导致的。
来,直接上步骤:
1、在 docker 里开启 22 端口,然后远程 ssh 连上去。
2、输入 sudo -i 切换到管理员权限
3、输入 docker ps -a 可以查询到所有的容器,这一步可以获取到容器的 ID
4、输入 docker inspect –format='{{.LogPath}}’ <容器ID>,可以获取到该容器的日志路径
5、cd 命令进入到该目录下,然后 ls 显示所有的文件
6、删除 log 文件,对于我的案例,删除 log.db 文件
7、输入 docker start <容器ID>
至此,该应用就启动起来了。
网上的说法是由于多个终端曾经操作容器,造成容器日志被锁。而容器的日志作为启动必须加载项,被锁造成启动失败。庆幸的是容器日志可被清空删除,删除后会重新创建。
因此移除异常的日志数据库,重启容器后恢复正常。
我的台式机,也不清楚是在系统升级后还是在卸载 SourceTree 后,再次使用 git 时,报告了 permission denied (publickey),一时之间也无法确认具体是发生了什么。
按照网上的说法,第一步是要生成新的 ssh key,由于我已经确认在目录下存在 id_rsa 和 id_rsa.pub 文件,所以这个问题肯定不是 ssh key 的问题。
我也检查了 pub 文件里的内容,和 bitbucket 里的是一样的,所以这个也可以排除。
有说要把 ssh key 添加到 keychain 里,输入命令 ssh-add “私钥的文件路径例如id_rsa”
发现还是不行,只好把 SourceTree安装回来,导入证书,并在选项里设置使用 OpenSSH,SourceTree 可以正常使用了。
重启系统后,发现 git 也可以使用了。所以,莫名其妙又好了。
在 chrome 的帮助菜单里经常可以看到 您的浏览器由所属组织管理,不管是否真的受组织管理,这个就让人特别不舒服。
本文提供一些思路:
1、打开浏览器,输入 chrome://management, 回车即可检查到当前电脑上安装的所有相关扩展程序。
2、输入 chrome://policy,回车即可检查到当前电脑上的组策略情况。
3、直接打开注册表,进入到 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist 路径,可以将里面的键值给删除咯。
既然不守规矩,那么大家都不要吃了,掀桌子。
要说这个月最重要的事情,莫过于刚发布不久的二十条,以及新十条。
从政策层面,取消了检查核酸有效期的限制,也不再执行落地检,核酸除了特定的场合外,也可以不做了。
万恶的弹窗3即将进入历史的垃圾桶。
下半场正式开始,大家开始拼身体的时候到了。
每个人,都要对自己的健康负责,这东西,能够晚一点触碰到就晚一点吧。
从网上下载回来的视频,打开时提示编码格式不对,不能播放。
实在是很遗憾。
后来经过检索,找到了一种方式,将文件以十六进制格式打开,将开头的3个 FF 删除,再拖动到文件的末尾,将最后的两个 31,修改成两个 00。
保存文件,然后我们再来试一试。
由于项目需要使用 mp4 视频文件,所以要将现有的gif 动画给转换一下。
网上一搜索,各种在线转换工具,随便选了一个,上传转换下载一气呵成。
但是,后面视频怎么都不显示,以为是代码的问题导致,后来无意间看到 chrome 内核下是可以正常显示的,遂怀疑是兼容性问题。
于是网上各种检索,无意间看到别人在一篇 android 手机的帖子里提及了类似的问题,说是转换的格式不对。尝试了一下,果然解决问题。
这里给出 ffmpeg 的方案,方便后来人:
ffmpeg -i gestures.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" gestures.mp4
今天使用 Ubuntu 去连接企业级别的无线网络,按照设置填写完信息后,总是无法访问,系统会自动弹窗让重新输入用户名密码。网上搜索了下,看来很多人都有遇到类似的问题。大家都认为是 Ubuntu 本身的连接 bug。
这里给出一个最简单的方法:
在/etc/NetworkManager/system-connections/下有连接过的wifi的配置文件,找到你刚才连接的那个。在[802-1x]节点下,检查system-ca-cert的配置,添加或者修改以确保 system-ca-cert=false,保存退出,重新点击连接WIFI就可以了。
这么看起来,似乎是 UI 界面在设置的时候没有把这个值给写到配置文件里导致。
在运行程序,特别是开发阶段,有时候会碰到程序提示端口被占用的情况。有的时候,我们可以改变端口号,但是某些时候,端口号不能修改,只能去找到底是被什么程序占用的。
首先,以管理员权限运行下面的命令:
netstat -ano
可以显示所有获得网络连接活动的程序列表,如果想看特定的端口,也可以一步到位,例如查找 4200 端口,输入:
netstat -aon | findstr "4200"
界面输出的列表最后一列就是 PID 信息,这个 PID 就是使用该端口的程序进程。然后在任务管理器里根据 PID 找到具体的进程,接下来就是根据情况杀死这个进程就可以了。
但是,但是,别急。一般情况下没有问题,实际操作上会发现有的时候,查出来的 PID 是 4,也就是 System 进程,该进程无法被结束。
是不是感觉很沮丧。
在网上一番检索后,又找到了针对 System 进程进一步分析的方法。
接着在命令行里输入:
netsh http show servicestate
在输出结果里查找目标端口号,再根据上下文找到“请求队列名称”的值,这个值就是具体的进程,再根据这个队列名称,在上下文里找到进程 ID。
最后就可以在任务管理器里结束相关进程拉。