Windows 7中的注销脚本


2

我有公共机器,我需要运行注销脚本,这是在Perl中。我希望脚本为标准用户运行。似乎UAC阻止了这种情况的发生。所以,我已经将UAC级别变为“永不通知”,这似乎正在关闭UAC。但是,仍然没有骰子。这些脚本必须在注销时运行!


如果以非管理员用户身份登录时运行此脚本,UAC是否会提示提升?另外,你是如何运行这个脚本的?通过团体政策
uSlackr

@ uSlacker-是的我通过GPO运行这个作为注销脚本
chrsblck 2011年

如果将UAC设置为,则不会关闭UAC never notify。还有另一种方法需要用来完全禁用它。

@ Randolph-根据Microsoft Tech Net页面,这是他们给“关闭UAC”的修复。如果我没有关闭UAC,你知道吗?
chrsblck 2011年

我似乎一直在想Windows Vista,而不是Windows 7.我为这种困惑道歉。Vista有一个明确的“关闭”选项来点击。

Answers:


0

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

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

注销脚本有什么作用?如果需要运行需要管理员权限的内容,则可能需要编写计划任务或在管理员帐户中运行的Windows服务来为您执行此操作。


Perl脚本做了一些事情。它清除所有TIF,为用户保存一些Dir,并运行一些系统调用以删除表单数据等...我还尝试编写批处理文件来提升Perl脚本,但.bat也不会运行。使用XP,我的方法运行良好
chrsblck 2011年

0

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

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

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

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

ServiceBase.OnCustomCommand方法


@ bzsparks-所以我需要创建一个可以调用我的Perl脚本的VB文件?我尝试使用批处理文件来运行可执行文件作为管理员,但没有运气。所以,我从来没有写过任何VB,你能帮忙吗?
chrsblck 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.