在Windows 7(和Windows XP)上放置可执行文件的安全位置

我正在对我们的login脚本进行调整,该脚本会将可执行文件复制到本地硬盘,然后使用schtasks命令安排一个任务来每天运行该可执行文件。

它是一个独立的可执行文件,运行时会在工作目录中创build一个文件夹(与本例中的可执行文件相同)。 在Windows XP当然,它可以放在任何地方 – 我可能只是把它放在C:\ SomeRandomFolder,让它成为。 但是,这个login脚本也可以在Windows 7 64位机器上运行,而那些UAC和这些都是棘手的。

用户是本地pipe理员,但UAC已启用,所以我非常确定,可执行文件将被阻止复制到像C:\C:\Program Files (因为这些似乎至less受到UAC的轻度保护)。 计划的任务需要在用户的configuration文件下运行,所以我不能只用SYSTEM运行它,而忽略UAC边界; 我需要find一个用户可以复制到的path。

我在哪里可以复制这个独立的可执行文件,以便在Windows 7上没有UAC提示复制操作成功,该path是WinXP和Win7共同或使用环境variables,并且用户权限运行的计划任务能够启动可执行文件?

您应该通过启动脚本部署应用程序。 您仍然可以以已login的用户身份运行任务,但是使用启动脚本部署应用程序将可以防止与您关心的UAC相关的任何问题。

您的部署“启动脚本”可以在部署该程序的文件夹上设置权限,以便可以创build具有用户的剥离标记的子文件夹(将“用户/修改”添加到放置文件的文件夹中,删除EXE上的“用户/修改”,以便其他用户或恶意软件不能replace或修改EXE)。

在我们公司,我写了这个脚本做了几件事,

答:)检查当前的驱动器映射,如果不存在,则映射驱动器号。

B.)我检查本地用户桌面上是否存在文件,如果文件不存在,则从networking共享复制。

C.)它检查哪个版本的Windows正在运行,并相应地运行一个不同的脚本。

希望这会帮助你。

+++++++++++++++++++++++++

 @echo off echo Created by: Jeff Borg - 01/25/2011 echo. echo. IF NOT EXIST P: GOTO :NetMap net use P: /delete :NetMap net use P: \\SERVER2\bvdata ver | find "XP" > nul if %ERRORLEVEL% == 0 goto ver_xp if not exist %SystemRoot%\system32\systeminfo.exe goto warnthenexit systeminfo | find "OS Name" > %TEMP%\osname.txt FOR /F "usebackq delims=: tokens=2" %%i IN (%TEMP%\osname.txt) DO set vers=%%i echo %vers% | find "Windows 7" > nul if %ERRORLEVEL% == 0 goto ver_7 echo %vers% | find "Windows Vista" > nul if %ERRORLEVEL% == 0 goto ver_vista :ver_xp echo Current Version Windows XP Echo. Echo. C: IF NOT EXIST "C:\Documents and Settings\%username%\Desktop\BusinessVisionCSE.rdp" GOTO xpNotFound Echo Found "BusinessVisionCSE.rdp" on %username%'s desktop goto exit :ver_vista echo Current Version Windows Vista Echo. Echo. C: IF NOT EXIST C:\Users\%username%\Desktop\BusinessVisionCSE.rdp GOTO vistaNotFound Echo Found "BusinessVisionCSE.rdp" on %username%'s desktop goto exit :ver_7 echo Current Version Windows 7 Echo. Echo. C: IF NOT EXIST C:\Users\%username%\Desktop\BusinessVisionCSE.rdp GOTO 7NotFound Echo Found "BusinessVisionCSE.rdp" on %username%'s desktop goto exit :xpNotFound Echo Could not find file "BusinessVisionCSE.rdp" on %username%'s desktop. Echo. Echo. Echo Copying from \\SERVER1\gpofiles\BusinessVisionCSE.rdp Echo. Echo. xcopy \\SERVER1\gpofiles\BusinessVisionCSE.rdp "C:\Documents and settings\%username%\Desktop\" Echo. Echo. Echo Found "BusinessVisionCSE.rdp" on %username%'s desktop GOTO exit :vistaNotFound Echo Could not find file "BusinessVisionCSE.rdp" on %username%'s desktop. Echo. Echo. Echo Copying from \\SERVER1\gpofiles\BusinessVisionCSE.rdp Echo. Echo. xcopy \\SERVER1\gpofiles\BusinessVisionCSE.rdp C:\Users\%username%\Desktop\ Echo. Echo. Echo Found "BusinessVisionCSE.rdp" on %username%'s desktop GOTO exit :7NotFound Echo Could not find file "BusinessVisionCSE.rdp" on %username%'s desktop. Echo. Echo. Echo Copying from \\SERVER1\gpofiles\BusinessVisionCSE.rdp Echo. Echo. xcopy \\SERVER1\gpofiles\BusinessVisionCSE.rdp C:\Users\%username%\Desktop\ Echo. Echo. Echo Found "BusinessVisionCSE.rdp" on %username%'s desktop GOTO exit :warnthenexit echo Unable to determine current OS version - Contact [email protected] pause :exit Echo. Echo.` 

那么所有用户个人资料文件夹呢?

这可能不是最漂亮的方式,但如果你的可执行文件很小,没有麻烦,它应该是足够安全的。 当然你可以通过env var获得path。