如何测试是否已设置Windows组?你能以某种方式使用来自的反应:
Exec('net.exe', 'localgroup', '', SW_SHOW, ewWaitUntilTerminated, Result);
将列出组到命令提示符? (我知道结果是一个错误代码,其中0表示成功,只是为了清楚。)
有办法吗?有不止一种方式吗?
答案 0 :(得分:1)
我还没有对此进行测试,或者有时间计算出确切的过程或语法,但您可以按照建议使用net localgroup
使用命令重定向(请参阅https://technet.microsoft.com/en-us/library/bb490982.aspx),找到组名并将其输出到文本文件。然后,您可以使用LoadStringFromFile
将其读入Inno Setup,然后您需要做的就是比较两个字符串。
因此,仔细查看了这一点,看看管理员组是否存在,您可以使用:
[Run]
Filename: "{cmd}"; Parameters: "/c ""net localgroup | find /i ""Administrators"" > ""{tmp}\groupresult.txt"""""; StatusMsg: "Querying user groups..."; Flags: runhidden
[Code]
var
strGroupResult: String;
begin
LoadStringFromFile(ExpandConstant('{tmp}\groupresult.txt'), strGroupResult);
if strGroupResult = '*Administrators' then
begin
//Code to execute if group exists
...
end;
DeleteFile(ExpandConstant('{tmp}\groupresult.txt'));
end;
请注意,net localgroup
在组名前面返回星号(*),因此字符串比较也需要包含星号。
如果您需要在[Run]
部分之前执行此操作,则可以在Exec
部分中编写类似的[Code]
行以运行相同的过程。