Local seguro para colocar um arquivo executável no Windows 7 (e no Windows XP)

1
Estou trabalhando em um tweak para o nosso script de logon que irá copiar um arquivo executável para o disco rígido local e, em seguida, usando o comando schtasks , agendar uma tarefa para executar esse executável diariamente.

É um arquivo executável autônomo e, quando executado, cria uma pasta no diretório de trabalho (que, no caso, seria o mesmo diretório do executável). No Windows XP, é claro, ele pode ser colocado em qualquer lugar - eu provavelmente o colocaria em C: \ SomeRandomFolder e deixaria. Mas este script de logon também é executado em máquinas com Windows 7 de 64 bits, e essas são mais complicadas com o UAC e tudo mais.

O usuário é um administrador local, mas o UAC está habilitado, por isso tenho certeza de que o executável não poderá ser copiado para um local como C:\ ou C:\Program Files (já que esses parecem ser pelo menos moderadamente protegidos por UAC). A tarefa agendada precisa ser executada sob o perfil do usuário, portanto, não posso executá-la apenas com o SYSTEM e ignorar os limites do UAC; Eu preciso encontrar um caminho que o usuário possa copiar.

Onde posso copiar esse arquivo executável autônomo, para que a operação de cópia seja bem-sucedida sem um prompt do UAC no Windows 7, o caminho é comum ao WinXP e ao Win7 ou usa variáveis de ambiente e a tarefa agendada é executada permissões de usuário podem iniciar o executável?

    
por Ricket 11.03.2011 / 19:33

3 respostas

1

Você deve estar implantando o aplicativo por meio do Script de inicialização. Você ainda pode executar a tarefa como o usuário que fez o logon, mas a implantação do aplicativo com um Script de inicialização evitará problemas com os quais o usuário esteja preocupado.

Seu script de inicialização de implantação pode definir as permissões na pasta em que você está implantando o programa, de modo que ele possa criar sua subpasta com o token separado do usuário (adicionar "Usuários / Modificar" à pasta em que você está colocando arquivo, e remova "usuários / modificar" no EXE para que outros usuários ou software mal-intencionado não pode substituir ou modificar o EXE).

    
por 12.03.2011 / 03:55
0

Na nossa empresa, escrevi este script que faz algumas coisas,

A.) Verifica se há um mapa de unidade atual e, se não existir, mapeia uma letra de unidade.

B.) Verifico a existência de arquivos na área de trabalho dos usuários locais, se o arquivo não estiver lá, e copie se de um compartilhamento de rede.

C.) Verifica qual versão do windows está rodando e executa um script diferente de acordo.

Espero que isso ajude você.

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

@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.'
    
por 11.03.2011 / 22:11
0

E a pasta de perfil para todos os usuários?

Pode não ser a maneira mais bonita, mas se o seu executável for pequeno e não causar problemas, ele deverá ser seguro o suficiente. Claro que você pode pegar o caminho por env var.

    
por 11.03.2011 / 19:41