我正在寻找一种方法,使我能够在具有管理员权限的用户登录时自动启动某个程序。
我已经尝试使用任务计划程序,但没有成功,因为你必须输入格式为 machine\user 的用户名,而我们的 pxe-image-deployment-system 会自动修补机器名称,因此输入的 domain\user 停止工作。
更新:
runas.exe 命令似乎也不适合此任务。如果使用 /user:machinename\Administrator /savcred,则在映像处理后无效。一位用户建议使用 .\Administrator 或 localhost\Administrator,但在我的 XP SP3 机器上这两个命令都不起作用。
更新2:
在我需要执行的程序中,这个函数正在被使用:
[DllImport("user32.dll")]
public static extern int ExitWindowsEx(int uFlags, int dwReserved);
当使用 Alan Kuras 建议的程序时,此功能失败,这对我来说是不可行的。
更新3:
是的!我想我明白了!似乎您无法在另一个用户上下文中运行时使用 ExitWindowsEx。
我只是将我的应用程序切换到 WTSLogoffSession,现在它就可以正常工作了!
答案1
如果您由于部署系统而无法使用内置函数完成此任务,那么有一个解决方案,它可以用于许多其他事情,例如向某人发送可以在不知道密码的情况下以管理员身份运行的程序。
基本上,您需要创建包含管理员密码并可以获得以其他用户身份运行的指定权限的程序。我想到了一些程序:
- 加密运行方式www.wingnutsoftware.com
- 运行http://robotronic.de/runasspcEn.html
- 华人会计师协会http://www.joeware.net/freetools/tools/cpau/
- MiniRunAs (开源)http://www.source-code.biz/snippets/c/1.htm- 命令行工具(不加密)
这些程序可以加密您的脚本、用户名和密码,并在用户环境中自动以本地管理员身份运行。
或者,如果你懂一些编程语言,你可以自己写一个。只需阅读有关模拟的内容(例如 C#)
编辑2: 我想到的第二件事是。如果您在获取计算机名时遇到问题,您可以尝试使用 %COMPUTERNAME% 变量(如 %COMPUTERNAME%\Administrator)并检查是否有效。
答案2
我通过使用替代的 runas 程序解决了这个问题,华人会计师协会。
答案3
这是一种迂回的方法,但当我们使用 Clonezilla PXE 来镜像机器时,我们在 XP“启动”文件夹中有一个批处理文件,它会在首次登录时启动。该批处理文件会添加 4 或 5 个计划任务,然后自行删除。
您可以使用“SCHTASKS /Create”来添加任务。如果您有兴趣使用此方法,这里有一个例子。
SCHTASKS /Create /RU username /RP password /SC hourly /D * /M * /TN taskname /TR C:\folder\process.bat /ST 12:00 /SD 06/20/2012 /F
SCHTASKS /Create /? 将为您提供帮助信息。
答案4
这对我有用:
在运行程序的快捷方式的目标字段中添加如下所示的粗体文本 C:\WINDOWS\system32\runas.exe /user:用户名/savcred“程序路径\程序名称.exe”
附言:也检查你的 Windows 系统路径 !!!
用户名必须是安装了 program_name.exe 的帐户的用户名