我正在寻找"RunOnceEx"的逆版本.
在用户的shell(桌面和任务栏)启动之前,RunOnceEx会运行一些程序.在runonceex完成之前,登录进度不会继续.
我希望在用户注销时完全相同.当她/他注销时,所有正在运行的程序关闭,离开shell(桌面和任务栏),然后""我希望我的程序将在此时执行"",最后注销.
我认为这是可能的,因为"mobsync.exe"正在这样做.但我找不到在哪里以及如何做到这一点.
我正在寻找有关是否有Windows标准方法来实现此目的的信息?
基本上我们有一个供应商更新了他们的驱动程序,运行我们软件的设备必须自动更新.
为此,我们必须首先卸载现有的驱动程序(供应商要求).
关于最佳做法/方法的任何指导.为什么需要这样做的细节可能并不重要.它只需要完成.
此外,样本也非常有用.
谢谢
我有一个看起来像这样的powershell.exe,它可以从我的命令行运行:
powershell.exe -noexit -command " & 'C:\Test\test.ps1' "
Run Code Online (Sandbox Code Playgroud)
但是,当我在当前用户的runonce-key中完全按照那种方式输入该条目时,没有任何反应.
从runonce调用powershell.exe传递参数或运行的正确方法是什么?
我很想知道用户登录时Windows启动的顺序.有人知道吗?基本上,我的应用程序是由GPO调用的登录脚本调用的.在调用第三方EXE时,它无法启动.
然后,通过反复试验,我发现HKCU ...\RunOnce键在登录脚本之后执行.同样的结果,EXE被调用,但未能启动.
工作原理:更新了登录脚本,在用户的Startup文件夹中创建了一个快捷方式.现在EXE按预期启动了.
我知道AutoRuns可以告诉我所有可以放置启动项的位置,是否有人知道整个执行顺序?我能够发现Run和RunOnce键是异步调用的.我可以继续测试AutoRuns所声明的每个启动项,但这可能需要数天.
我最感兴趣的是Windows 2003 Server登录启动流程,但我怀疑它与今天使用的其他Windows风格非常相似.
我使用以下代码尝试生成RunOnce条目:
program RunOnceTest;
{$APPTYPE CONSOLE}
uses
SysUtils, Registry, Windows;
var
R: TRegistry;
begin
try
WriteLn('Testing RunOnStartup.......');
R := TRegistry.Create;
try
R.RootKey := HKEY_LOCAL_MACHINE;
R.LazyWrite := False;
R.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True) ;
R.WriteString('this', 'that') ;
R.CloseKey;
finally
R.free;
end;
WriteLn('Test Finished');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Run Code Online (Sandbox Code Playgroud)
我运行应用程序,然后执行.
但是,没有条目:
HKEY_LOCAL_MACHINE\SOFTWARE \微软\的Windows\CurrentVersion \的RunOnce
在我的注册表中.我需要管理员权限吗?我还需要做什么?
补充:我应该更好地解释并真正问一个关于我想要做什么的问题.我试图让我的应用程序在启动时自动运行.很多应用程序执行此操作而不需要管理员权限.这样做的正常方法是什么?
我注意到当您执行以下操作时$TEMP参数具有不同的值:
手动运行将导致 $TEMP = C:/Users/username/AppData/Local/Temp
从具有管理员权限的应用程序运行 = C:/Windows/Temp
健康)状况:
我有一个安装程序,需要重新启动系统才能完成该过程。
为此,我在 $TEMP 中创建了安装程序的副本,并将路径放入RunOnce
问题:
该功能工作正常(重启后,程序更新为新版本)。
但是,在安装过程结束时,我无法删除安装程序的副本,因为通过RunOnce运行安装程序时$TEMP = C:/Users/username/AppData/Local/Temp。
事实上,安装程序的副本位于C:/Windows/Temp
问题:
是否可以强制 $TEMP 始终 = C:/Windows/Temp?
有没有更好的解决方案来解决系统重新启动安装的情况?
我需要在安全模式下重新启动后运行一次进程,该进程是这样的:
\n\nbcdedit.exe /import "%WINDIR%\\Restore BootLoader Settings.bcd"\n
Run Code Online (Sandbox Code Playgroud)\n\n我尝试使用 RunOnce 密钥,但我注意到密钥不会在安全模式启动下运行,所以...是否存在其他方式在安全模式启动下运行该死的进程?
\n\n更明确地说,这就是我想要做的:
\n\n在正常模式或任何其他模式下,我导出所有引导加载程序条目的当前设置。
然后我更改当前引导加载程序条目的一些参数,然后重置电脑。
这就是问题所在,例如,当在安全模式下再次登录 Windows 时,我需要在新更改之前恢复(导入)设置,以便在重置计算机时不再以安全模式启动。
我怎样才能做到这一点?
\n\n这是我的vbs脚本:
\n\n\' Restart in Safe Mode\n\' By Elektro H@cker\n\nIf Not Msgbox( _\n "\xc2\xbfSeguro que quieres reiniciar el equipo?", _\n 4 or 48, _\n "Reiniciar en Modo Seguro..." _\n ) = vbNo _\nThen\n\nSet wshShell = WScript.CreateObject("WScript.Shell")\n\nTempFile = """" & wshShell.ExpandEnvironmentStrings("%WINDIR%") & "\\" & "Bcdedit settings.bcd" & """"\n\nwshShell.Run "bcdedit /export " & TempFile, 0, True\nwshShell.Run …
Run Code Online (Sandbox Code Playgroud) 我有一个程序,我想在Windows启动时启动.所以我将程序写入注册表值SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce.Windows启动时程序立即运行.
但是,它会在任何其他进程启动之前运行该程序.我希望在我的桌面启动并且所有其他系统进程都已启动后启动我的程序.我该怎么做?
编辑:所以我在程序中添加了延迟.在我的程序运行之后,无论我在程序中发生什么样的延迟,都不会像桌面这样的进程启动.
runonce ×8
windows ×5
registry ×2
batch-file ×1
bcdedit ×1
console ×1
delphi ×1
driver ×1
installation ×1
login ×1
logout ×1
nsis ×1
powershell ×1
startup ×1
temp ×1
uninstall ×1
vbscript ×1
windows-7 ×1
windows-xp ×1