[转]WINDOWS环境变量设置 - RJ

时间:2024-03-04 08:35:54

[转]WINDOWS环境变量设置

WINDOWS环境变量设置

 

1、修改注册表的方法要重启才生效(永久的)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /d "%path%;C:\" /f

 

---------------------------------------

 

2、有安装Windows XP Service Pack 2 Support Tools支援工具的XP或2003系统可以在bat中使用setx命令(临时的,重启后又变回原来的)

@echo off

setx TUXDIR "D:\bea\tuxedo11gR1"

setx PATH "%path%D:\bea\tuxedo11gR1\bin"

pause

 

ps: 在WIN7系统中,变量PATH被新增到用户变量中去了,原有系统变量中的PATH根本没有任何变化。

 

 

 

都加到用户变量中去了;

 

   在XP系统中,变量的位置和值都是对的,但是重启后变量就没有了。

 

---------------------------------------

3、使用WMIC,XP中立即生效(永久的),WIN7中不会立即生效(重启后永久生效)

 

a) 设置用户变量TUXDIR,值为D:\wonders\bea\tuxedo11gR1,多次运行BAT会自动覆盖;

@echo off

wmic ENVIRONMENT create name="TUXDIR",username="%username%",VariableValue="D:\wonders\bea\tuxedo11gR1"

pause 

成功添加至用户变量(如下图)

 BAT <wbr>脚本设置环境变量

 

再次运行时,会自动提示己存在,所以不需要判断是否设置

 

 

 

 

 

 

 

 

 

 

 

 

 

b) 设置系统变量path,在其值后增加路径D:\wonders\bea\tuxedo11gR1\bin,要判断是否己

配置好,否则多次运行会在path值后重复添加该路径;

@echo off

echo %path%|findstr /i "D:\wonders\bea\tuxedo11gR1\bin"&&(goto continue)

wmic ENVIRONMENT where "name=\'path\' and username=\'<system>\'" set VariableValue="%path%;D:\wonders\bea\tuxedo11gR1\bin"

pause 

成功添加至系统变量,如下图:

 

 

再次运行时会陆续在path值后添加相同路径,所以需要加判断:

 

echo %path%|findstr /i "D:\wonders\bea\tuxedo11gR1\bin"&&(goto continue)

wmic ENVIRONMENT where "name=\'path\' and username=\'<system>\'" set VariableValue="%path%;D:\wonders\bea\tuxedo11gR1\bin"

:continue

 

如果己经配置了,就不执行了,直接跳过;

 

---------------------------------------

 

3、要在批处理中立即生效(只是临时的,生命力最弱)加一句:

直接用set命令:set path=%path%;

退出批处理后,环境变量恢复原来模样;

 

---------------------------------------

 

==================================================

 

 

理论阐述性技术贴:

详解Windows不重启使环境变量修改生效(经典)
 

在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效。有没有什么方法可让它即时生效呢?下面介绍一种方法:

  以修改环境变量“PATH”为例,修改完成后,进入DOS命令提示符,输入:set PATH=C: ,关闭DOS窗口。再次打开DOS窗口,输入:echo %PATH% ,可以发现“我的电脑”->“属性”->“高级”->“环境变量”中设置的 PATH 值已经生效。

  不用担心DOS窗口中的修改会影响环境变量的值,DOS窗口中的环境变量只是Windows环境变量的一个副本而已。但是对副本的修改却会引发Windows环境变量的刷新,这正是我们想要的!

 

诡异啊,使用win+R->cmd 启动的cmd.exe 会发现在电脑属性中设置的环境变量立马生效了,在其他模式下启动的cmd却没有发生效果,怪哉!!查看了一下资料,在电脑属性中设置环境变量以后,以后启动的程序和线程会生效,而对以前驻留内存的程序不起作用,也有人说kill explorer.exe 再启动explorer.exe 可以激发设置其作用。

 

这里要理解的是,一个程序启动时,环境变量被复制到该程序所在的环境中,在该程序执行过程中不会被除该程序以外的其他程序所改变。也就是说,假设我们启动了一个cmd程序,然后通过控制面板修改了环境变量设置,但是已经启动了的cmd所拥有的环境变量并不会被改变。如果我们在修改环境变量之后启动cmd程序,则该程序将拥有新的环境变量。
那么结论就很明显了:修改环境变量之后,如果受影响的是应用程序,那么只要简单地重新启动此应用程序,环境变量的修改就会反映到该程序中,而不必重新启动计算机;但是,如果受影响的是系统服务,就必须重新启动才能将环境变量的修改反映到系统服务中(因为没有办法在不重启计算机的情况下重新启动系统服务管理器)。

 

 

方案一:修改注册表,并向系统广播消息

修改Windows环境变量后不重新启动使之立即生效的方法

不少程序需要添加各自的环境变量,方便定制性使用。用得最多的是用户指定目录如JAVA_HOME等变量,程序中可以根据获取变量%JAVA_HOME%,来获取对应设置的字符串。


 

一般做法是安装的时候就指定,或者程序中设定。

用批处理临时设置环境变量就不提了,这里讲让环境变量始终生效。

一般做法是修改环境变量注册表。

整个Windows都有效的环境变量在
HKEY_LOCAL_MACHINESYSTEMControlSet001ControlSession ManagerEnvironment
中设置

对当前用户有效的环境变量在
HKEY_CURRENT_USEREnvironment
中设置

其实只是简单的元数据

但往往修改玩后无法即时生效,往往需要重启系统。

要解决即时生效的问题,可以再在我的电脑属性中设置环境变量中确定一下即可。

依此看来,这个过程肯定是读取了注册表,再调用一个系统函数来更新整个系统的变量。一定可以编程解决的。

可惜网海茫茫,收不到。

一不做二不休,直接下载打开innosetup的代码,搜索Environment,果真找到了。

很简单:

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,LPARAM("Environment"), SMTO_ABORTIFHUNG, 5000, &MsgResult);

发一个全局的广播,等待各自相应后,立即生效

  { Note: We originally used SendNotifyMessage to broadcast the message but it
    turned out that while it worked fine on NT 4 and 2000 it didn\'t work on XP
    -- the string "Environment" in lParam would be garbled on the receiving
    end (why I\'m not exactly sure). We now use SendMessageTimeout as directed
    in the KB article 104011. It isn\'t as elegant since it could cause us to
    be delayed if another app is hung, but it\'ll have to do. }

 

 

方案二:在高级属性中设置完毕后,在任意cmd下设置一次path的值,达到全局广播的目的

让环境变量生效不需重启Windows

很多安装程序在安装完成后并不要求重启Windows,而新的环境变量已经生效了,可见在不重启Windows的情况下让环境变量生效是完全可行的。

可我搜索如何不需重启Windows让环境变量生效的方法,只找到三类方案:

下载一个专门的软件
编个小程序
修改注册表
我既然是个懒得重启Windows的人,难道我会不厌其烦按上述三种方法去做吗?没办法,我只有自己摸索。最后找到一个非常简单的在Windows下直接让环境变量生效的办法:

先到我的电脑>属性>高级>环境变量,添加新环境变量或修改已有的环境变量,然后运行“DOS命令提示符”或run cmd,假设要修改PATH变量,不管PATH的原值是什么,在DOS窗口直接把PATH修改为任意值,如:输入:set PATH=C:,关闭DOS窗口。再次打开DOS窗口,输入:echo %PATH% ,这时可以发现,我的电脑>属 性>高级>环境变量里PATH已经在Windows全局生效了。

不用担心在DOS窗口的修改会影响我的电脑>属性>高级>环境变量里的修改,DOS窗口的环境变量只是Windows环境变量的一个副本,副本的改动不会影响正本,但会触发正本的刷新,这正是我想要的——让环境变量生效。

 

 

方案三:

修改Windows环境变量并使之立即生效

想在Windows下通过编程修改环境变量的值,并且希望修改完后立即生效
一、环境变量的修改
(1)修改当前进程的某个环境变量:SetEnvironmentVariable。
(2)修改系统环境变量:在注册表HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment中修改。
(3)修改用户环境变量:在注册表中HKEY_CURRENT_USEREnvironment修改。
二、环境变量的生效
在网上搜了一下,有两种说法:
(1)SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)TEXT("Environment"));
(2)SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,LPARAM("Environment"), SMTO_ABORTIFHUNG, 5000, &MsgResult);
没有尝试,先记在这儿。

 

==========================================================================================

下面是网阅的Windows官方资料,文档中阐述了环境变量更改后如何即时生效的原理。

 

出处:

    微软帮助和技术支持

    http://support.microsoft.com/kb/104011/zh-cn

 

容内

 

注:(中文版-机器翻译)机器翻译无法保证原文的正确度,中文版之后已附上英文原版 

 

您可以通过编辑以下注册表项修改用户环境变量:

 

 

   HKEY_CURRENT_USER /
         Environment

 

,可以通过编辑以下注册表项来修改系统环境变量:

 

   HKEY_LOCAL_MACHINE /
               SYSTEM /
    CurrentControlSet /
              Control /
      Session Manager /
          Environment

 

    注意必须作为 REG_EXPAND_SZ 注册表值在注册表中存储要扩展 (例如对于使用 %system%) 时需要的所有环境变量。不将从注册表读取时展开类型 REG_SZ 的任何值。 

 

    请注意 RegEdit.exe 没有一种添加 REG_EXPAND_SZ 的方法。 使用 RegEdt32.exe 手动编辑这些值时。 

  

    但是,请注意对环境变量所做的修改不会导致立即更改。例如对于如果对进行了更改之后启动另一个命令提示符,环境变量将反映上一个 (不在当前) 值。直到您先注销然后再次登录后,所做的更改不会生效 

    若要影响这些更改,而无需注销、 WM_SETTINGCHANGE 向广播消息的所有窗口在系统中,因此,任何感兴趣的应用程序 (如 Windows 资源管理器、 程序管理器、 任务管理器、 控制面版和等中) 可以执行更新。

 

 

    例如对于基于 Windows NT 的系统上下面的代码段应传播在命令提示符中使用的环境变量所做的更改:

 

 

     SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
    (LPARAM) "Environment", SMTO_ABORTIFHUNG,
    5000, &dwReturnValue);

 

 

    无附带 Windows 95 和 Windows 98,包括 Windows 资源管理器和项目经理的应用程序的响应此消息。这样,Windows 95 和 Windows 98 上,从技术上讲是可以实现这篇文章时,除了要通知的第三方应用程序不起作用。更改在 Windows 95 的全局环境变量的唯一方法是修改 autoexec.bat 文件并重新启动。

 

===========================================

 

wmic 修改后直接生效的

ENVIRONMENT  - 系统环境设置管理
::获取temp环境变量
wmic ENVIRONMENT where "name=\'temp\'" get UserName,VariableValue
::更改path环境变量值,新增e:\tools
wmic ENVIRONMENT where "name=\'path\' and username=\'<system>\'" set VariableValue="%path%;e:\tools"
::新增系统环境变量home,值为%HOMEDRIVE%%HOMEPATH%
wmic ENVIRONMENT create name="home",username="<system>",VariableValue="%HOMEDRIVE%%HOMEPATH%"
::删除home环境变量
wmic ENVIRONMENT where "name=\'home\'" delete

 

 

 

==========================================

 

 

 

 

利用wmic修改是直接生效的:(e:\tools 是新添加的目录)
wmic ENVIRONMENT where “name=’path’ and username=”” set VariableValue=”%path%e:\tools”



DESKTOPMONITOR – 监视器管理
 ::获取屏幕分辨率
 wmic DESKTOPMONITOR where Status=’ok’ get ScreenHeight,ScreenWidth
 
DISKDRIVE  – 物理磁盘驱动器管理
 ::获取物理磁盘型号大小等
 wmic DISKDRIVE get Caption,size,InterfaceType
 
ENVIRONMENT  – 系统环境设置管理
 ::获取temp环境变量
 wmic ENVIRONMENT where “name=’temp’” get UserName,VariableValue
 ::更改path环境变量值,新增e:\tools
 wmic ENVIRONMENT where “name=’path’ and username=’<system>’” set VariableValue=”%path%;e:\tools”
 ::新增系统环境变量home,值为%HOMEDRIVE%%HOMEPATH%
 wmic ENVIRONMENT create name=”home”,username=”<system>”,VariableValue=”%HOMEDRIVE%%HOMEPATH%”
 ::删除home环境变量
 wmic ENVIRONMENT where “name=’home’” delete
 
FSDIR  – 文件目录系统项目管理
 ::查找e盘下名为test的目录
 wmic FSDIR where “drive=’e:’ and filename=’test’” list
 ::删除e:\test目录下除过目录abc的所有目录
 wmic FSDIR where “drive=’e:’ and path=’\\test\\’ and filename<>’abc’” call delete
 ::删除c:\good文件夹
 wmic fsdir “c:\\good” call delete
 ::重命名c:\good文件夹为abb
 wmic fsdir “c:\\good” rename “c:\abb”
LOGICALDISK  – 本地储存设备管理
 ::获取硬盘系统格式、总大小、可用空间等
 wmic LOGICALDISK get name,Description,filesystem,size,freespace
 
NIC – 网络界面控制器 (NIC) 管理
 
OS  – 已安装的操作系统管理
 ::设置系统时间
 wmic os where(primary=1) call setdatetime 20070731144642.555555+480
 
PAGEFILESET  – 页面文件设置管理
 ::更改当前页面文件初始大小和最大值
 wmic PAGEFILESET set InitialSize=”512″,MaximumSize=”512″
 ::页面文件设置到d:\下,执行下面两条命令
 wmic pagefileset create name=’d:\pagefile.sys’,initialsize=512,maximumsize=1024
 wmic pagefileset where”name=’c:\\pagefile.sys’” delete
 
PROCESS – 进程管理
 ::列出进程的核心信息,类似任务管理器
 wmic process list brief
 ::结束svchost.exe进程,路径为非C:\WINDOWS\system32\svchost.exe的
 wmic process where “name=’svchost.exe’ and ExecutablePath<>’C:\\WINDOWS\\system32\\svchost.exe’” call Terminate
 ::新建notepad进程
 wmic process call create notepad
 
PRODUCT – 安装包任务管理
 ::安装包在C:\WINDOWS\Installer目录下
 ::卸载.msi安装包
 wmic PRODUCT where “name=’Microsoft .NET Framework 1.1′ and Version=’1.1.4322′” call Uninstall
 ::修复.msi安装包
 wmic PRODUCT where “name=’Microsoft .NET Framework 1.1′ and Version=’1.1.4322′” call Reinstall
 
SERVICE – 服务程序管理
 ::运行spooler服务
 wmic SERVICE where name=”Spooler” call startservice
 ::停止spooler服务
 wmic SERVICE where name=”Spooler” call stopservice
 ::暂停spooler服务
 wmic SERVICE where name=”Spooler” call PauseService
 ::更改spooler服务启动类型[auto|Disabled|Manual] 释[自动|禁用|手动]
 wmic SERVICE where name=”Spooler” set StartMode=”auto”
 ::删除服务
 wmic SERVICE where name=”test123″ call delete
 文章地址:http://qlj.sh.cn/system/20090430/wmic-command/
SHARE – 共享资源管理
 ::删除共享
 wmic SHARE where name=”e$” call delete
 ::添加共享
 WMIC SHARE CALL Create “”,”test”,”3″,”TestShareName”,”",”c:\test”,0
 
SOUNDDEV – 声音设备管理
 wmic SOUNDDEV list
 
STARTUP – 用户登录到计算机系统时自动运行命令的管理
 ::查看msconfig中的启动选项
 wmic STARTUP list
 
SYSDRIVER  – 基本服务的系统驱动程序管理
 wmic SYSDRIVER list
 
USERACCOUNT  – 用户帐户管理
 ::更改用户administrator全名为admin
 wmic USERACCOUNT where name=”Administrator” set FullName=”admin”
 ::更改用户名admin为admin00
 wmic useraccount where “name=’admin” call Rename admin00
关于 WMIC 的使用
最佳操作
对为别名返回的特定实例使用 WHERE () 子句。
? WHERE() 子句必须包括 WHERE 子句以进行有效的 WQL 查询。只有复杂的条件才需要括号。请查看 WQL 语法的 WMI SDK。WHERE() 子句必须紧随在别名之后。例如: process where (processID>300) list brief
? 当 WHERE 子句是 WHERE NAME=’<value>’ 时,只提供值就足够了。例如: SERVICE CLIPSRV
代替:
SERVICE WHERE NAME=’CLIPSRV’
使用 /OUTPUT、/APPEND 和 /RECORD 命令重定向输出。
? 以 HTML 格式输出的命令(如 CLASS)通常将它们的输出定向到一个文件。然后可以查看该文件,以了解命令的结果。可以使用 /OUTPUT、/APPEND 和 /RECORD 命令重定向输出。
如果值包含特殊字符(短划线、斜杠或空格),则请用引号将值括起来。
对于大的域或数据库,请使用以下查询的方法
? ALIAS
WMIC ALIAS PROCESS LIST BRIEF
? USERACCOUNT
WMIC USERACCOUNT WHERE “Name=’PutUserNameHere’ and Domain=’PutDomainNameHere’”
? FSDIR
WMIC FSDIR WHERE Name=’c:\\WINDOWS’
? DATAFILE
WMIC DATAFILE WHERE Name=”c:\\boot.ini” WMIC DATAFILE WHERE “PATH=’\\windows\\’ and Extension=’exe’ and FileSize>’108032′” GET LastAccessed, LastModified, Name, FileSize
? NTEVENT
WMIC NTEVENT WHERE “LogFile=’system’ and Type>’0′” GET Message, TimeGenerated WMIC NTEVENT WHERE “LogFile=’system’ and Type>’0′” GET Message, TimeGenerated /FORMAT:htable >c:\MySystemEvents.htm
? 查询:
使用引号 “” 将 WHERE 表达式分开,而不用括号 ():
WMIC NTEVENT WHERE “LogFile=’system’ and Type>’4′”
[ 比较:WMIC NTEVENT WHERE (LogFile=\'system\' and TYPE>4)
在这种情况下,命令行解释器将曲解    ">4)"
并试图将输出重定向到指定文件      "4)"      ]
在交互模式下运行 WMIC
1.
单击“开始”,然后单击“运行”。
2.
键入:
WMIC,然后按 Enter。
3.
键入希望 WMIC 执行的别名、命令或全局开关。
注意
? 要执行该过程,您必须是本地计算机上 Administrators 组的成员,或者您必须被委派了适当的权限。如果计算机已加入某个域,则 Domain Admins 组的成员可能会执行该过程。详细信息,请参阅默认本地组和默认组。
? 在交互模式下使用完 WMIC 之后,可以使用 Exit 或 Quit 命令退出 WMIC。
? 有关 WMIC 命令的详细信息,请在命令提示符处键入 /?。
在非交互模式下运行 WMIC
1.
打开“命令提示符”。
2.
在命令提示符下,键入:
WMIC
和希望 WMIC 执行的命令、别名或全局开关。
3.
按 Enter。
注意
要执行该过程,您必须是本地计算机上 Administrators 组的成员,或者您必须被委派了适当的权限。如果计算机已加入某个域,则 Domain Admins 组的成员可能会执行该过程。作为安全性最佳操作,请考虑使用“运行方式”执行此过程。详细信息,请参阅默认本地组、默认组以及使用运行方式。
要打开命令提示符窗口,请单击“开始”,依次指向“所有程序”、“附件”,然后单击“命令提示符”。
在非交互式模式下,WMIC 在执行一个命令之后返回到命令提示符。
有关 WMIC 命令的详细信息,请在命令提示符处键入 WMIC /?。
WMIC 的安全性
有关安全模式的一般信息
只有本地 Administrators 组的用户才可以启动 WMIC。在任何从 WMIC 到 WMI 的调用中都会强制执行 WMI 安全访问模型。操作系统对于通过 WMI 执行的任何操作均强制实施操作系统级别的安全性。例如,您不能通过 WMI 访问您不能从 Windows 资源管理器访问的文件。
WMIC 是 WMI 的客户端,因此所有安全检查都在 WMI 组件内进行。在连接到远程计算机之前,组件使用 PING 功能验证输入的有效性(远程计算机状态)。
当 WMIC 在 Telnet、终端服务或相似会话中使用时,所有命令都将在发布该命令的用户环境中执行。
WMIC 允许对别名和 XSL 进行扩展。安全性是通过 NTFS 解决的,该文件系统对访问 WMIC 的文件的操作实施仅限管理员的凭据要求。
除方法参数以外,WMIC 还允许只通过 /NODE 开关进行数据输入。可以使用 @FileList 选项作为一个文本文件提供计算机节点的列表。文件以及其位置应由管理员进行保护,并且输入文件最好应从 WBEM 目录中读取。
用户权限
不需要特殊的用户权限即可运行 WMIC。含蓄地说,为了能够使用 WMIC,用户需要有对 WMIC 名称空间和两个注册表项(HKLM\Software\Microsoft\WBEM 和 HKLM\Software\Microsoft\WBEM\WMIC)的完全写入访问权。
身份验证和授权
当这些资源被打开时,系统将提供身份验证和授权。它们存储在安全的位置,并使用随机访问控制列表 (DACL) 验证客户端是否具有对它们进行访问的权限。它们完全依赖于分布式组件对象模型 (DCOM) 安全性以及 Windows 管理 (WINMGMT) 进行远程访问,提供所需要的用户名、密码和所请求的级别。可以使用 /AUTHLEVEL 开关保护 WMIC 网络通信的安全。在 Windows Server 2003 家族操作系统中,默认级别设置为 PKTPRIVACY,它提供数据包隐私性加密级别。可以使用 /AUTHLEVEL 开关修改身份验证级别。
示例:
WMIC /AUTHLEVEL:Pktprivacy /NODE:”testcomputer.microsoft.com” BIOS
配置数据
配置信息存储在注册表和 WMI 储备库中。注册表配置保存了有关架构的采用托管对象格式 (MOF) 编译的状态的时间戳和有效性。在 WMIC 的每一个会话开始时,将对此信息进行评估,当架构无效或已被一个用户更新时,WMIC 将更新 WMI 储备库。
杂项
WMIC 是一个功能强大的命令行工具,通过该工具,您可以很快地执行您有权限执行的任何任务。如果您不熟悉 WMI 环境,可以使用 /INTERACTIVE 开关为删除操作设置一个警告。例如:
WMI /INTERACTIVE:ON
下列命令在任何时候都可以使用:
CLASS  退出 WMIC 的默认别名模式并以 WMI 架构直接访问类。
PATH   退出 WMIC 的默认别名模式并以 WMI 架构直接访问实例。
CONTEXT  显示所有全局开关的当前值。
QUIT   退出 WMIC。
EXIT   退出 WMIC
 
WMIC在批处理的应用实例(转)
第一次使用WMI会自动安装,等待数秒即可正常使用。
wmic 获取硬盘固定分区盘符:
for /f “skip=1″ %%i in (‘wmic logicaldisk where “drivetype=3″ get name’) do @echo %%i
简要说明:
wmic + 欲操作的对象名+ where 从句(这是筛选条件)+ get + 对象的属性
这样的格式已经可以帮助我们获取很多东西了,大家可以具体参考
查看wmic对象: wmic /?
查看wmic对象有何可用属性: wmic 对象名称 get /?  例如 wmic process get /?
查看wmic对象某个属性的值: wmic 对象名称 get 对象某个属性  例如 wmic process get name
ps: 以上例子中的drivetype的值为2 表示可移动磁盘或软盘,值为3表示固定磁盘,值为5表示光驱。
wmic 获取进程名称、可执行路径、删除、创建指定进程
:
wmic 获取进程名称以及可执行路径:
wmic process get name,executablepath
wmic 删除指定进程(根据进程名称):
wmic process where name=”qq.exe” call terminate
或者用
wmic process where name=”qq.exe” delete
wmic 删除指定进程(根据进程PID):
wmic process where pid=”123″ delete
wmic 创建新进程
wmic process call create “C:\Program Files\Tencent\QQ\QQ.exe”
其实都很容易上手的,大家多用用就会熟悉这种模式了
详细信息用 wmic process get /? 查看所有可用的属性
wmic 操作远程计算机上的程序
在远程机器上创建新进程:(2003系统)
wmic /node:192.168.1.10 /user:administrator /password:123456 process call create cmd.exe
关闭本地计算机
wmic process call create shutdown.exe
重启远程计算机 (2003系统)
wmic /node:192.168.1.10/user:administrator /password:123456 process call create “shutdown.exe -r -f -m”
wmic 操作计算机名称和用户帐户
更改计算机名称
wmic computersystem where “caption=’%ComputerName%’” call rename newcomputername
更改帐户名
wmic USERACCOUNT where “name=’%UserName%’” call rename newUserName
wmic 结束可疑进程(根据进程的启动路径)
wmic process where “name=’explorer.exe’ and executablepath<>C:\\WINDOWS\\windows\\explorer.exe’” delete
wmic 获取物理内存
wmic memlogical get TotalPhysicalMemory|find /i /v “t”
wmic 获取文件的创建、访问、修改时间 (tvzml纠正)
@echo off
for /f “skip=1 tokens=1,3,5 delims=. ” %%a in (‘wmic datafile where name^=”C:\\WINDOWS\\NOTEPAD.EXE” get CreationDate^,LastAccessed^,LastModified’) do set a=%%a & set b=%%b & set c=%%c
echo 文件名称:  %WINDIR%\NOTEPAD.EXE
echo 创建时间:  %a:~0,4%年%a:~4,2%月%a:~6,2%日, %a:~8,2%:%a:~10,2%:%a:~12,2%
echo 修改时间:  %c:~0,4%年%c:~4,2%月%c:~6,2%日, %c:~8,2%:%c:~10,2%:%c:~12,2%
echo 访问时间:  %b:~0,4%年%b:~4,2%月%b:~6,2%日, %b:~8,2%:%b:~10,2%:%b:~12,2%
pause
wmic 全盘搜索某文件并获取该文件所在目录
for /f “skip=1 tokens=1*” %i in (‘wmic datafile where “FileName=’qq’ and extension=’exe’” get drive^,path’) do (set “qPath=%i%j”&@echo %qPath:~0,-3%)
wmic 获取屏幕分辨率
wmic DESKTOPMONITOR where Status=’ok’ get ScreenHeight,ScreenWidth
更改当前页面文件初始大小和最大值,重启计算机后生效
wmic PageFileSet set InitialSize=”512″,MaximumSize=”512″
设置虚拟内存到E盘,并删除C盘下的页面文件,重启计算机后生效
wmic PageFileSet create name=”E:\\pagefile.sys”,InitialSize=”1024″,MaximumSize=”1024″
wmic PageFileSet where “name=’C:\\pagefile.sys’” delete
获得进程当前占用的内存和最大占用内存的大小:
wmic process where caption=’filename.exe’ get WorkingSetSize,PeakWorkingSetSize