ProgrammingNotes
  • README
  • accounting会计学
  • Apache
  • ar
  • asciidoc
  • AssemblyLanguage汇编语言
  • authorization授权
    • 1.jwt
    • 2.oauth
  • C语言
    • C++
  • cache
  • Computer计算机相关
    • 1.reinstallSystem重装系统
    • 2.vhd
    • 3.bulidWeb建站
    • 4.computerOrganization计算机原理
  • config配置文件相关
  • ContainerTechnology
    • 1.docker
    • 2.kubernetes
  • cs计算机科学
    • 1.api
      • 1.1.restful
      • 1.2.graphQL
      • 1.3.openAPI
      • 1.4.swagger
    • 10.blockchain区块链
      • 10.1.bitCoin比特币
    • 11.characterEncoding字符编码
    • 12.map
      • 12.1.百度地图
      • 12.2.qgis
      • 12.3.openLayers3
      • 12.4.postGIS
    • 13.ai人工智能
    • 14.machineLearning机器学习
    • 15.ioT物联网
    • 16.microservices微服务
    • 17.serverless无服务架构
    • 2.uml
    • 3.designPattern
    • 33.compilation_tool编译工具
      • 33.1.gradle
      • 33.2.maven
    • 4.devOps
      • 4.1.ci
        • 4.1.1.jenkins
        • 4.1.2.github_actions
        • 4.1.3.team_city
      • 4.2.argoCD
    • 6.dataVisualization数据可视化
    • 7.abandonTechnology可放弃的技术
    • 8.bigData大数据
      • 8.1.streamComputing流计算
      • 8.2.edgeComputing边缘计算
    • 9.deepLearning
  • C#
  • db数据库
    • 1.sql
    • 2.noSQL
      • 2.1.redis
      • 2.2.mongoDB
      • 2.3.hbase
      • 2.4.etcd
    • 3.fileSystem文件系统
      • 3.1.fastDFS
      • 3.2.hdfs
    • 4.postgreSQL
    • 5.sqlserver
    • 6.MySQL
    • 7.oracle
    • 8.oceanBase
    • 9.influxDB
    • DatabaseSecurity数据库安全
    • pl/sql
  • Delphi
  • dorado
  • education
  • english
  • frontEnd前端
    • 1.html
      • 1.1.h5
      • 1.2.webSocket
      • 1.3.html2pdf
    • 10.1.wonder
    • 10.webGL
    • 2.w3C规范
      • 2.1.webAPIs
    • 3.css
    • 4.dom
    • 5.xhtml
    • 6.webAssembly
    • 7.ajax
    • 8.fetch
    • 9.picture
  • git
    • 1.gitbook
    • 2.svn
    • 3.github
    • 4.travis_ci
  • golang
    • go_cloud
    • go_crawler
    • goroutine
    • hydra
  • hardware
  • ios
  • java
    • 1.jvm
    • 2.java高级特性之多线程
    • 3.javafx
    • 4.java网络编程
    • 5.java类加载和反射
    • 6.jms
    • 7.java_cloud
    • 8.jsp
    • 9.spring
  • js
    • 1.npm
    • 13.mockJS
    • 19.bootstrap
    • 2.nodeJS
    • 25.echarts
    • 3.angular
      • 3.1.angularCLI
      • 3.2.angularMaterial
    • 4.react
      • 4.3.reactNative
      • 4.4.next
    • 5.vue
      • 5.1.vue-CLI
      • 5.2.vuex
      • 5.3.axios
      • 5.4.vue-router
      • 5.5.element-ui
      • 5.6.vueCore
      • 5.7.nuxt
    • 6.compilation_tool编译工具
      • 6.1.webpack
      • 6.2.parcel
      • 6.3.grunt
    • 7.lib第三方库
      • 7.1.jQuery
      • 7.2.lodash
    • TypeScript
      • 8.1.tslint
    • Deno
    • JS设计模式
    • ECMAScript
    • JS
    • JS6
    • NativeScript
    • RXJS
    • V8
  • linux
    • 1.vim
    • 2.shell
    • 3.shellScript
    • 4.ubuntu
    • 5.makefile
    • 6.centOS
  • markdown
  • markup_lang
    • JSON
    • YAML
  • math
    • 1.algorithm算法
    • 2.cryptology密码学
    • 3.computerGraphics计算机图形学
    • 4.dataStructure数据结构
  • MC消息通信
    • MQ消息队列
      • 1.kafka
      • 2.rabbitMQ
      • 3.redis
      • 4.activeMQ
      • 5.rocketMQ
      • 6.nats
    • MQTT
      • EMQ
    • RPC
      • gRPC
  • mobile
    • android
      • 1.kotlin
      • 2.weixin
      • 3.miniProgram
    • cordova
    • dart
    • flutter
    • ios
      • xcode
    • ReactNative
  • network网络
    • 2.ss
    • 3.http
    • 4.kcp
    • 5.nmap
    • 5G
    • 6.webCrawler
  • news重要新闻
  • Philosophy哲学
    • AnCoderPrepares程序员的自我修养
    • 软件工程的语录
  • php
  • popularizationOfScience科普
  • protocol
    • 1.rpc
  • python
  • readingNotes读书笔记
    • 1.profession专业笔记
    • 2.sql_Antipatterns
    • 3.unix_Network_Programming
    • 4.the_Docker_Book
  • rust
  • scriptingLanguage
    • 2.lua
    • 3.regularExpression正则表达式
    • 4.julia
    • 5.ruby
  • security安全
  • server服务器相关
    • nginx
    • OpenResty
  • software&tool软件和工具
    • 1.vscode
    • 11.plsqldev
    • 17.androidStudio
    • 3.虚拟机VirtualMachine
    • 4.jetBrains
    • 5.eclipse
    • 7.visualStudio
    • 8.office系列
  • softwaretest软件测试
    • JUnit
  • ssh&ssm
    • 2.hibernate
    • 1.spring
  • unix
    • hackintosh
    • mac
  • vr
  • windows
    • terminal&DOS
    • windows10
    • Wine
  • word一些术语
  • zztemp草稿
    • temp
    • temp4study
    • temp4studyLater以后再学的
Powered by GitBook
On this page
  • windows
  • 一 概述
  • 1 简介
  • 2 历史
  • 3 常识
  • 二 安装配置
  • 三 基础
  • 0 架构和常见词语
  • 1 工具生态
  • 2 DOS、命令行和运行程序
  • 3 windows消息模型
  • 4 远程桌面协议RDP
  • 四 高级
  • 1 快捷键
  • 2 iocp(待整理)
  • 五 经验
  • 六 问题
  • 1 已解决
  • 2 未解决
  • 七 未整理

Was this helpful?

windows

windows

[TOC]

一 概述

1 简介

2 历史

3 常识

3.1 用户变量和系统变量

如果电脑有多个人使用,那就配置用户变量,系统变量影响的是所有用户。

3.2 文件路径长度

windows文件路径长度最多只支持260个字符,所以太长的目录可能引起错误

3.3 命令行输出到剪切板

使用系统自带的clip命令,用法类似linux

  1. 将字符hello放入剪切板:echo hello | clip

  2. 将dir命令输出放入剪切板:dir | clip

  3. 将readme.txt的内容放入剪切板:clip < readme.txt

  4. 将空字符串放入剪切板,即清空剪切板:echo | clip

3.4 关于大小写

windows系统不区分大小写,但其他系统严格区分大小写

3.5 administrators和administrator

administrators是管理员用户组,你可以将想给予管理员权限的用户放到这个组里,而且这个组是WINNT/2000/XP中权限最大的一个组,组内的用户可以进行所有涉及权限的操作,如修改用户密码、创建新用户、提升用户权限、修改系统配置及添加硬件、文件备份。 administrator是NT系列操作系统内置的管理员帐户,是Windows安装完成以后系统自动生成的一个用户,通常需要通过这个用户来提升其它管理员。可在组策略管理(gpedit.msc)中将其改名。与administrator一样由系统内置的帐户还有guest。

3.6 自带的远程控制

似乎只对两种情况生效:使用公网的 IP 地址或者两者在同一个内网内。

3.8 有空格的目录

在终端进入带空格的目录有三种方式(和mac不太一样),比如目录Program Files:

  1. cd 'Program Files'

    1. 如果想直接进去更下面的Docker目录,可以写成cd 'Program Files\Docker'而不能写成cd 'Program Files'\Docker

  2. cd Program' 'Files

  3. cd Program" "Files

二 安装配置

三 基础

0 架构和常见词语

Hyper-V

网友:最早支持Hyper-V的Windows是Windows Server 2008。说起Hyper-V的历史,也是有一定渊源的。最早有一家公司,名叫Connectix,它有一款产品就是大家熟悉的Connectix Virtual PC,一款硬件虚拟化产品,后来Connectix把Virtual PC产品卖给了微软,成为了Microsoft Virtual PC,之后Connectix于2003年宣布解体,微软把Virtual PC精神发扬光大,成就了现在的Hyper-V。从Windows 10开始,Professional/Enterprise版本的Windows 10都能够支持Hyper-V了。大家可以直接在Windows 10中创建虚拟机,而不需要额外安装vmware player、Oracle VirtualBox等这些第三方的虚拟机服务。

在开始菜单中输入Hyper-V作为关键字,Hyper-V Manager菜单项就会显示出来,点击Hyper-V Manager的菜单项,即可打开Hyper-V的管理界面。在Hyper-V Manager中,可以非常方便地创建并管理虚拟机,虚拟机的操作系统可以是Windows的,也可以是Linux的,用户只需要下载所需操作系统的ISO镜像即可完成安装,非常方便。可参考微软官网Hyper-V的教程。

1 工具生态

1.1 包管理

最热门的软件包管理工具就属Scoop和Chocolatey,不过两者的定位稍有不同

scoop

参考:

  1. 官方

    1. https://github.com/lukesampson/scoop

    2. 一个按照 Github score(由 Star 数量、Fork 数量和 App 数量综合决定的 Github score)排列的 bucket 列表:https://github.com/rasa/scoop-directory/blob/master/by-score.md

windows命令行包管理工具,简单执行scoop install xxx,它就会把软件检车、下载、安装、更新、配置等步骤全部帮你做完。它不仅轻量,还将软件默认安装到我们的用户目录下,安装过程不需要申请管理员权限(UAC)也不会污染系统环境变量。

优缺点:

  1. 优点

    1. 默认情况会将程序安装到用户主目录里,这样就不需要管理员权限

  2. 缺点:安装自身和包的时候需要科学上网

安装:

  1. 安装scoop的两种方法(详细见github)

    # 方法一
    # 先执行下面这句允许本地脚本运行,否则会出现错误:
    # 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”
    # FullyQualifiedErrorId : WebException
    Set-ExecutionPolicy RemoteSigned -scope CurrentUser
    # 然后安装
    Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
    
    # 方法二
    # 实测出现了DNS污染,需要修改hosts文件或者用梯子:
    # iwr : 未能解析此远程名称: 'raw.githubusercontent.com'
    xxx.xxx.xxx.xxx raw.githubusercontent.com
    
    # 然后执行
    iwr -useb get.scoop.sh | iex
    
    # 查看是否安装成功
    scoop help
  2. 安装包的位置:用户安装的程序和scoop本身位于C:\Users<user>\scoop。全局安装的程序位于C:\ProgramData\scoop。可以通过环境变量更改这些设置。

  3. 配置

    1. (可省略)安装后的自检scoop checkup,根据自检结果进行操作

      1. ...

      2. scoop install innounp

      3. scoop install wixtoolset

    2. 应用推荐 2. 开发相关sudo scoop install 7zip nginx curl less vim 4. 桌面应用相关,先安装extras bucketscoop bucket add extras,然后再安装scoop install potpalyer googlechrome 2. potpalyer:很强的视频播放器,但是安装后没有自动添加到上下文,需要自己进入应用设置里面关联视频文件格式。 3. googlechrome:安装后启动命令是chrome 4. ventoy

      1. 不推荐

        1. aria2:安装后scoop会默认使用它来加速,它提供多线程下载和断点续传。虽然网上都是建议安装aria2,但是本人实测发现对于新手并不好用,所以暂时不推荐安装。

        2. make

    3. 安装后快捷方式目录~\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps

使用:

  1. bucket:Scoop的设计初衷是为了方便 Windows 开发者安装和配置开发工具,其默认软件仓库的收录条件也就很苛刻,导致了它默认软件仓库(main bucket)里软件数量有限。bucket可以理解为软件库,类似于brew的tap,我们可以通过添加“软件库”来找到自己想要的软件.

    1. 查看可以直接识别并添加的bucket:scoop bucket known,常见bucket简单介绍如下

      1. extras:Scoop 官方维护的一个仓库,涵盖了大部分因为种种原因不能被收录进主仓库的常用软件

      2. nirsoft:是一个 NirSoft 开发的小工具的安装合集。NirSoft 制作了大量的(dozens and dozens)小工具,包括系统工具、网络工具、密码恢复等等,孜孜不倦、持续更新。

      3. gams:包含了大量免费开源的游戏

      4. dorado:添加了一些国内的app,比如 qqplayer ️

        1. https://github.com/chawyehsu/dorado

      5. java:可以通过它安装各种 jdk 、 jre

    2. 添加bucket

      1. 分两种情况

        1. 对于能直接识别的bucket可以直接用名称安装scoop bucket add bucketnameA

          # 比如添加extras存储库(https://github.com/lukesampson/scoop-extras.git,类似于brew的cask)可以轻松添加对流行的Windows桌面程序的支持
          scoop bucket add extras
        2. 对于不能直接识别的bucket,需要带上git仓库地址scoop bucket add bucketnameA gitRepoA。当然,对于能直接识别的也可以这样添加

          scoop bucket add extras https://github.com/lukesampson/scoop-extras.git
  2. 搜索:scoop search xxx,会在所有的bucket中搜

  3. 查看软件详情scoop info xxx

    1. Manifest:路径指向的文件是 Scoop 具体读取的配置文件

  4. 安装,同理卸载是uninstall

    1. scoop install xxx

    2. scoop install -g xxx:安装到全局目录

  5. 更新和保持

    1. 更新scoop自身到最新版scoop update,依赖git

    2. 更新某appscoop update xxx

    3. 更新所有appscoop update *

    4. 保持住版本hold,一般开发环境的工具软件建议保持住

      scoop hold mysql
      scoop hold nodejs
      scoop hold maven
  6. 版本切换:scoop reset的作用是重置应用程序来解决冲突,借助这个命令可以在不同版本之间进行切换

    # 切换java版本
    # 切换phthon版本
    todo
  7. 查看状态和更新scoop status

Chocolatey

参考:

  1. https://chocolatey.org/

  2. https://github.com/chocolatey/choco

也是优秀的软件,比scoop更臃肿,相比之下有一些缺点:

  1. 很多软件安装位置不固定, 会污染Path

winget-cli

参考

  1. https://learn.microsoft.com/zh-cn/windows/package-manager/winget/

  2. https://github.com/microsoft/winget-cli

使用:

  1. 安装软件winget install [software],因为下载的软件包基本上都是 .exe 后缀,加上大多需要通过 UAC 提权,因此安装软件过程中大概率会弹出调用 GUI 安装交互界面,并不能实现真正意义上的完全静默安装。install 命令要求你指定要安装内容的具体字符串,如果存在任何不明确性,系统会提示你进一步筛选到具体应用程序。

    1. 参数

      1. --id:根据id来安装

      2. -s(--source):根据源来安装。如果源是winget,那么一般是去软件的官网下载。

      3. -l(--location):指定安装路径(需要被安装的软件本身支持),未指定的话默认安装在C:\Program Files路径下。

      4. -i:交互式安装,类似手动点击.exe文件安装,推荐加上,因为你也不知道软件厂商会不会整一些捆绑操作

      5. --rainbow: 使用彩虹进度条,看起来比较酷炫

    winget install microsoft.openjdk.11
    # 安装git fow windows
    winget install --id Git.Git -e --source winget
    # 查看git fow windows安装路径
    where.exe git # C:\Program Files\Git\cmd\git.exe
    
    # 安装WeChat
    winget install wechat -l 'D:/Program Files' -s winget -i --rainbow
  2. 搜索winget search [software]

    winget search tencent
  3. 查看

    1. 查看已安装软件

      #  查看已安装软件,包括win32软件以及Microsoft Store 安装的软件
      winget list 
    2. 查看某款软件的信息winget show [software]

问题:

  1. 是否支持ssh远程使用:不支持

  2. 是否支持查看已安装软件的路径:不支持,只能通过其他方式查看(比如where命令等)

1.2 Windows Terminal

见terminal&dos部分笔记

2 DOS、命令行和运行程序

见terminal&dos部分笔记

3 windows消息模型

它是事件驱动的编程模型,应用程序通过处理操作系统发送来的消息来响应事件。事件可能是用户的一次鼠标移动,键盘敲击,或者是系统要求窗口重绘的消息,程序员所需要做的事就是处理应用程序感兴趣的消息。

Windows的消息系统是由3个部分组成的:

  1. 消息队列。Windows能够为所有的应用程序维护一个消息队列。应用程序必须从消息队列中获取消息,然后分派给某个窗口。

  2. 消息循环。通过这个循环机制应用程序从消息队列中检索消息,再把它分派给适当的窗口,然后继续从消息队列中检索下一条消息,再分派给适当的窗口,一次进行。

  3. 窗口过程。每个窗口都有一个窗口过程来接收传递给窗口的消息,它的任务就是获取消息然后响应它。窗口过程是一个回调函数,处理了一个消息后,它通常要返回一个值给Windows。

一个消息从产生到被一个窗口响应,其中有5个步骤:

  1. 系统中发生了某个事件。

  2. Windows把这个事件翻译为消息,然后把它放到消息队列中。

  3. 应用程序从消息队列中接收到这个消息,把它存放在TMsg记录中。

  4. 应用程序把消息传递给一个适当的窗口的窗口过程。

  5. 窗口过程响应这个消息并进行处理。

其中步骤3和4构成了应用程序的消息循环。消息循环往往是Windows应用程序的核心,因为消息循环使一个应用程序能够响应外部的事件。消息循环的任务就是从消息队列中检索消息,然后把消息传递给适当的窗口。如果消息队列中没有消息,Windows就允许其他应用程序处理它们的消息。

windows是一个消息驱动的系统,它使用两种方式把各种事件通知给应用程序:

  1. 把消息放在应用程序的消息队列中

  2. 向适当的窗口过程直接发消息

4 远程桌面协议RDP

脆弱的

四 高级

1 快捷键

  1. 调出程序最小化、最大化、移动(m,非全屏时可用)、关闭(c)等命令面板:alt+空格,而且可以在程序没有边框的时候使用

2 iocp(待整理)

五 经验

六 问题

1 已解决

  1. 权限问题,按照网上说的方法设置还是不行,最后把网络高级设置里的共享等全部打开,最后重启居然好了(待补充)

    1. 你需要管理员权限才能删除此文件

    2. 将安全信息应用到以下对象时发生错误

    3. 无法设置新的所有者 拒绝访问

    4. ...

    5. 不知道是不是上面的这些设置有了部分效果,现在当删除的时候如果提示"需要权限...",就先删除文件夹里的文件,然后再删除文件夹就行了.

  2. mkdir有时会出现" Access is denied"的提示,带上sudo用管理员启动shell有时也会出现

    1. 大概是因为之前执行出错了还未结束了,重试一下。但还是偶尔会发生

2 未解决

  1. 显示"必须在两天内激活windows才能继续使用" 不激活会怎么样?

  2. sysinternals现在还有用吗

七 未整理

  1. wintogo的实际体验效果如何,和在mac上装双系统相比呢?

  2. rd \s命令在powershell中不生效

PreviousvrNextterminal&DOS

Last updated 8 months ago

Was this helpful?