当Administrator变成Administrador
呵呵,钓了大家一天,现在公布正确答案,
首先,大家看看标题,Administrador?,是我拼错了吗?(t->d)
不是,在西班牙文的Windows Vista中,英文的Administrator账户就是用Administrador来标识的(类似的还有俄文,德文系统)
那么我们的Batch就会遇到一个致命的问题,比如:
Net User Administrator /active:yes
这条语句,在西班牙文的系统上面就会执行失败,原因很简单,因为西班牙文的系统用Administrador代表Build-In administrator账户。
因此,在上一篇文章中的C#代码实际上是起到了一个名称翻译的作用,
其原理是,通过WMI的Win32_UserAccount 类
p.mpInterWMIPath = new ManagementPath(\\\\.\\root\\cimv2:Win32_UserAccount);
获得当前系统的所有账户实例,然后通过枚举每个实例的SID属性判断其是否为需要的账户,
因为Build-In Administrator的最后的SID是500, Guest是501。
上篇文章的工具应该怎么用来支持LOC语言的系统呢?
上面的代码可以通过VS.NET或者C#编译器进行编译,之后形成一个叫做USERS.exe的文件。
那么具体的解决方案如下:
1. 调用这个Users.exe将西班牙文系统上面的Build-in Administrator 账户写到一个TXT文件中,比如如下的Batch
@ECHO OFF
USERS.EXE Administrator > LOCNAME.txt
2. 使用For语句,从LOCNAME.txt文件中读取解析之后的Administrator名称(Administrador),比如如下的Batch
@ECHO OFF
for /f %%H IN (LOCNAME.txt) DO Net User %%H /active:yes
注意,上面的脚本都使用同一个工作文件夹。
当然,上一篇文章的代码只是一个Demo,因为不能将工作中的代码外泄的规定,所以只能写一个Mini版的,但基本的原理就是如上的东西了,
希望对大家工作有帮助。