Windows 7 中的注销脚本

Windows 7 中的注销脚本

我有公共计算机,需要运行注销脚本,这些脚本使用 Perl 编写。我希望脚本为标准用户运行。看来 UAC 阻止了这种情况的发生。因此,我已将 UAC 级别设置为“从不通知”,这似乎会关闭 UAC。但仍然没有成功。这些脚本必须在注销时运行!

答案1

UAC 将阻止需要管理员访问权限的程序。

如果您的 perl 脚本要求提升权限,那么对于标准用户,即使 UAC 已关闭,Windows 也会要求管理员访问权限(行为类似于 Windows XP)。

注销脚本有什么用?如果它需要运行需要管理员权限的某些操作,那么您可能需要编写一个计划任务或以管理员帐户运行的 Windows 服务来为您执行此操作。

答案2

从您的描述来看,该脚本似乎需要管理员权限才能执行。除非该脚本是从具有管理员令牌的进程启动的,否则系统将通过 UAC 提示您提升权限。

您可以使用以 LOCAL SYSTEM 用户身份运行并实现 OnCustomCommand() 方法的简单 Windows 服务来规避此限制。

从注销脚本中有一个可执行文件,它调用 ExecuteCommand() 方法并传递一个预定的 int,该 int 将作为服务执行需要管理员权限的命令的触发器。

private enum CustomCommands { RunAsAdmin = 128 };
ServiceController srvc = new ServiceController("SimpleService");
srvc.ExecuteCommand((int)CustomCommands.RunAsAdmin);

ServiceBase.OnCustomCommand 方法

相关内容