对于剧本:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new FileInputStream(new File("abc.xml")));
Result output = new StreamResult(new File("abc.xml"));
Source input = new DOMSource(doc);
// xml processing instruction and comment node
ProcessingInstruction xmlpi = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"");
Comment comment = doc.createComment("DO NOT EDIT THIS FILE");
// first transform the processing instruction and comment
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(xmlpi), output);
transformer.transform(new DOMSource(comment), output);
// then the document
transformer.transform(input, output);
此脚本授予Subinacl用户对某些服务的管理权限。但是,您可以看到这仅适用于计算机%Computername%上的一个名为(user)的用户。
我想知道是否有可能为本地计算机上的所有用户运行以Subinacl开头的2行。
由于
答案 0 :(得分:0)
您可以使用WMIC
获取计算机上定义的用户名列表,然后使用FOR
迭代每个用户名。下面的代码示例可以帮助您入门。
请注意,以下内容不会尝试过滤掉内置帐户或其他“特殊”帐户。我也不确定引用适用于SUBINACL
的语法。我建议您在删除ECHO
电话前面的SUBINACL
行之前,先查看所需的行为。
@echo off
title Applying Noah service rights, please wait...
cd c:/subinacl
FOR /F "usebackq" %%a IN (`WMIC UserAccount GET Name`) DO CALL :process_account "%%a"
pause
REM exit batch script file
EXIT /B
:process_account
SETLOCAL
REM strip any quotes from argument
SET ACCT=%~1
REM skip blank names
IF "%ACCT%"=="" EXIT /B
REM skip "Name" header from WMIC
IF "%ACCT%"=="Name" EXIT /B
ECHO Processing account: %1
REM remove the ECHO in front of SUBINACL once tested
ECHO subinacl /service NoahServer /grant="%Computername%\%ACCT%"=TOP
ECHO subinacl /service NoahClient /grant="%Computername%\%ACCT%"=TOP
REM return to CALLer
EXIT /B