ping -t 192.168.1.1 | Foreach{"{0} - {1}" -f (Get-Date),$_} > D://work/ping-log.txt
ipconfig /displaydns
, 清空 dns 缓存:ipconfig /flushdns
netstat -ano
, 在 powershell 里可以用 netstat -ano | select-string LISTENING
来筛选只查看端口监听绑定CreateProcessWithToken
等创建不同凭据进程函数如果出现 1058
错误,可能是系统服务 Secondary Logon 被禁用导致。certutil -hashfile <file-path-name> MD5 certutil -hashfile <file-path-name> SHA1 certutil -hashfile <file-path-name> SHA256
certmgr.msc
, 本地计算机 certlm.msc
w32tm /stripchart /computer:<target_ip>
ncpa.cpl
devmgmt.msc
CTRL + WIN + D
创建桌面,CTRL + win + ←/→
切换桌面C:\Users\<your-user-name\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml
, 找到 CustomTaskbarLayoutCollection
, 删除 <taskbar:TaskbarPinList>
里的相关项目,再在任务栏右键对应图标取消固定,下次重启就不会再回来。where <cmd>
where
是另外的object指令,要写全exe: where.exe <cmd>
tar
与 curl
指令了 @echo off :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> If error flag set, we do not have admin. if '%errorlevel%' NEQ '0' ( echo Requesting administrative privileges... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" :-------------------------------------- echo 1 start openvpn echo 2 stop openvpn set /p T= please select: if %T%==1 goto 1 if %T%==2 goto 2 :1 sc start OpenVPNservice :2 sc stop OpenVPNservice
DIR "%CD%" /AD /B /S | SORT /R /O list.txt IF EXIST deleted.txt ATTRIB -S -H -A -R deleted.txt & DEL /F /Q deleted.txt FOR /F "delims=|" %%i IN ( list.txt ) DO RD "%%i\" & IF NOT EXIST "%%i\" ECHO %%i\>>deleted.txt IF EXIST deleted.txt NOTEPAD.EXE deleted.txt DEL /S /Q list.txt
forfiles /s /m *.* /d -2017/01/01 /c "cmd /c del /s /f /q @path"
Set-NetFirewallProfile
, New-NetFirewallRule
等; win10 之前可用 netsh advfirewall,例如关掉所有(域、专用、公用)防火墙netsh advfirewall set allprofiles state off
设置策略:
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
更多可在powershell 打命令查看
netsh advfirewall -?
: enter the folder of this file cd %~dp0
doskey /?
, 例如 doskey ls=dir $*
reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun ^ /t REG_EXPAND_SZ /d "%"USERPROFILE"%\init.cmd" /f
@echo off chcp 65001
SetUnhandledExceptionFilter
与 MiniDumpWriteDump
LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo) { HANDLE lhDumpFile = CreateFile(_T("DumpFile.dmp"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL); MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo; loExceptionInfo.ExceptionPointers = ExceptionInfo; loExceptionInfo.ThreadId = ::GetCurrentThreadId(); loExceptionInfo.ClientPointers = TRUE; ::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), lhDumpFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL); ::CloseHandle(lhDumpFile); return EXCEPTION_EXECUTE_HANDLER; } int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow) { ::SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); ... }
得添加头文件<Dbghelp.h>
,链接 Dbghelp.lib
。
MoveFileEx
可以设置为重启电脑后才移动/删除,关键字MOVEFILE_DELAY_UNTIL_REBOOT
SHGetFolderPath
RegisterWaitForSingleObject
,vista之后则是 CreateThreadpoolxxx
系列函数,现成的线程池来等待事件,不需要自己开线程了。GetExitCodeProcess
CreateProcessAsUser
如果访问不了注册表HKCU,要考虑调用LoadUserProfile
,详见MSDNCoInitalzieSecurity
给进程设置安全权限,一个进程只能设置一次,多次设置会返回RPC_E_TOO_LATE
错误,值为0x80010119
ATL::CSecurityDesc
ATL提供了这类函数来方便权限设定ShellExecuteEx
如果用户为管理员,可以把参数 lpVerb
设置为 “runas”
来绕过 UAC,具体步骤是用 runas 启动一个自身新实例,再把自身进程退出。winlogon.exe
进程是后台服务进程,但属于登录用户会话,所以可以获取其访问令牌,然后通过 CreateProcessAsUser
将进程启动到活动登录用户当前活动会话,就可进行界面交互。SetProcessShutdownParameters
想让程序退出慢时不让弹出重试窗口?关键词 SHUTDOWN_NORETRY
详见MSDNWTSGetActiveConsoleSessionId
只能获取本地用户活动ID,不能获取远程登录ID,要配合用 WTSEnumerateSessions
来判断state值来获取当前活动用户 session id。SERVICE_CONTROL_SESSIONCHANGE
来获取。NetShareAdd
NetUserAdd
,NetLocalGroupAddMembers
GetSystemDefaultLangID
获取系统语言; xp设置程序界面语言:SetThreadLocale
;vista以上设置程序界面语言:SetThreadUILanguage
<img src=“%23203” />
, 其中%23是 #
符号. 203是图片资源ID. 注意图片资源必须在RC文件的HTML分类下!style=“overflow: hidden”
是不符合 w3c 标准的,在加载声明 Doctype w3c 标准的页面时, 顶级 html 元素就是<html>
. 所以, 直接在 html 标签里修改 overflow 就可以正确屏蔽滚动条.::SetParent
就可。GetNamedSecurityInfo
获取DACLSetEntriesInAcl
, SetNamedSecurityInfo
_WIN32_WINNT
高于等于 0x0600, 且用的 win7 编译,那么你程序在XP运行时一切正常包括各种返回值都正确,但就是不出托盘气泡——奇葩——所以还是老老实实把那些个宏定到你想支持的最低系统版本吧,不然真不知道会出什么不能追踪的问题——虽然好像程序运行起来没问题。HandlerEx
,但是 VS2010 默认的 ATL 服务项目的代码用的是 Handler
, 需要自己手动 copy atlbase.h
的相关代码并修改FILETIME
需转为 LARGE_INTEGER
进行处理再转为 FILETIME
, 需要注意的是 FILETIME的单位是100*nanosecond, 即10,000,000分之一秒!Shell_Notifyicon
添加的图标会因为启动时任务栏窗口还未创建, explorer.exe 过于繁忙, 或者直接在任务管理器结束explorer.exe 而丢失. 为了避免这种情况, 需要 RegisterWindowMessage(_T(“TaskbarCreated”)
, 详见 MSDN:Shell_Notifyicon 底下评论部分, 以及Taskbar created notification. Insert Activex Control
是灰的, 要让其可用, 可以删掉 resource.h 里的宏 _APS_NO_MFC
!!IDB_IMG HTML “res\\myimg.bmp”
/unregserver
),会抛出无权限错误异常, 直接原因是 com 服务 release 之前 com 环境就已经结束. 把用到的 com 指针由智能指针改为普通指针, 自己手动在 PostThreadMessage 函数里 release , 可解决. MAX_PATH
限制:maximum-file-path-limitation::IsWindows10OrGreater
在 win10 仍然返回false, 因为相关接口已经被win10弃用; 如果要准确判断win10,可以用非常规方法 RtlGetVersion
, 参考get-correct-system-version-on-windows-10~\scoop
下。//在代码里加入 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) //或直接在工程属性里设置.
_DEBUG
MSDNVisual Studio command prompt
, 执行命令 dumpbin /exports <target.dll|target.lib>
gpedit.msc
,本地组策略编辑器-计算机配置-管理模板-系统-关机选项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
添加字符串值,名为DisableTaskMgr
, 值为 1;Ctrl-Alt-del
:gpedit.msc
-用户配置-管理模板-系统-“Ctrl-Alt-Del”, 选择生效所有禁用选项;gpedit.msc
-计算机配置-管理模板-系统-登录, 选择生效禁用快速用户切换;