【发布时间】:2015-04-15 02:56:57
【问题描述】:
尽管可以使用ExecAsOriginalUser 来使用启动/登录用户的凭据运行某些东西,但是否有命令或方法可以以特定用户身份运行特定的一段代码?
为了进一步解释,我在安装结束时将计算机名称写入文件共享的日志中。只要不使用在服务器上没有匹配的本地管理员帐户的本地管理员帐户进行安装,就可以完美地工作。因此,我需要做的是让写入日志的特定代码位作为特定用户帐户执行,我知道该用户帐户存在于服务器上。
我使用的代码如下:
{ Auto audit the computer name }
procedure AutoAudit();
var
strComputerName: TArrayOfString;
strAutoAuditFile: String;
begin
strAutoAuditFile := '\\' + ClientConnectionPage.Values[0] + '\Audit\Client Audit.txt';
SetArrayLength(strComputerName, 1);
strComputerName[0] :=
ExpandConstant('{computername} ') + GetDateTimeString('dd/mm/yyyy hh:mm', '/', ':');
SaveStringsToFile(strAutoAuditFile, strComputerName, True);
end;
所以,我需要一种以其他用户身份执行SaveStringsToFile 函数的方法。
我想到了一种相当麻烦的方法来做到这一点,这将涉及测试可用的驱动器号、使用帐户凭据映射驱动器、写入文件然后断开驱动器的连接。但是,我希望有一种更优雅的方式来做到这一点?
【问题讨论】:
标签: inno-setup elevated-privileges