Como um arquivo de lote pode ser executado como um usuário normal criar arquivos na unidade C:?

0

Eu escrevi um arquivo em lotes que cria um arquivo na pasta raiz da unidade C :. No entanto, se fizer login como usuário normal, o arquivo não será criado e eu receberei o erro "Acesso negado".

Como posso evitar esse problema?

    
por 3498DB 08.05.2011 / 10:30

4 respostas

6

O usuário não tem permissão para gravar na raiz da unidade. Você precisa criar o arquivo em um local ao qual o usuário tenha acesso de gravação. Por exemplo, sua pasta Application Data. A raiz da unidade C geralmente é bloqueada para evitar que você grave nela, já que não é uma prática recomendada.

Se você absolutamente precisa escrever na raiz da unidade, edite as permissões NTFS da unidade para permitir que o usuário grave nela. Mas esteja ciente de que isso não é uma boa maneira de fazer as coisas.

    
por 08.05.2011 / 10:59
1

Como afirmado, o uso de % TEMP% ou % TMP% é recomendado se o arquivo não precisar ser rastreado / salvo. Se não, eu usaria apenas % USERPROFILE% ( c: \ Documents and Settings \ normal ) onde 'normal' é o seu nome de usuário ... já que é o mais simples / lugar lógico para colocá-lo se você não tiver os privilégios corretos para acessar o diretório raiz. % USERPROFILE% \ desktop se você quiser que ele seja colocado na área de trabalho para facilitar o acesso.

    
por 23.05.2011 / 22:31
0

Em vez de usar um caminho "codificado", você pode usar um que geralmente pode ser escrito como %appdata% ou %UserProfile% . Lá você pode criar um arquivo ou, de preferência, uma pasta / diretório para ser usado pelo seu arquivo de lote.

Como alternativa, você pode fazer com que o usuário especifique o nome do arquivo absoluto a ser usado.

Se você realmente precisa de direitos de administrador, pode usar o comando runas (por exemplo, com savecred) de dentro do seu script.

    
por 08.05.2011 / 11:00
0

Concordo plenamente com o que já foi dito aqui. Além disso, acho que %UserProfile% às vezes não é o lugar preferido para colocar arquivos temporários. Em vez disso, você poderia usar %TEMP% para essas coisas. Para dados que precisam estar permanentemente disponíveis para o usuário, você pode usar %AppData%\someFolderName . A principal vantagem de %AppData% é que também é transferida para outras máquinas se os perfis de roaming estiverem habilitados em ambientes corporativos.

Lembre-se de que também %TEMP% é específico do usuário. Portanto, cada usuário que efetuar logon no sistema terá seu próprio arquivo temporário, que não é compartilhado. Se você precisar compartilhar arquivos entre vários usuários, considere colocar o arquivo em algum lugar em %PUBLIC% , disponível para todos os usuários da máquina.

    
por 08.05.2011 / 14:55