2010-10-02 103 views
0

我在寫一個.bat腳本,我需要將一個文件複製到System32。 我更改爲該文件夾,然後嘗試將該文件從存儲文件夾複製到System32文件夾。.bat腳本複製到System32中會導致拒絕訪問

cd C:\Windows\System32 
copy %~dp0file.txt file.txt 

我收到錯誤Access Denied, 0 files copied

我明白了爲什麼這是一個問題,因爲如果我嘗試使用非編程GUI界面將文件複製到System32,我會得到一個提示,要求我確認。因此,對於該腳本,我如何繞過此Windows權限或正確設置它或其他解決方案。

編輯:我從下面的答案中得到的提示是,它可以觸發Windows顯示其GUI提示給用戶授予權限。這個想法會做。希望有人知道如何做到這一點。

回答

1

屬於超級用戶(投票移動)。

答案是:使用提升的命令提示符(或者,如果你從一個快捷方式啓動您的批處理文件,在快捷方式的屬性中選擇「以管理員身份運行」)

編輯:既然你解釋你正在尋找對於觸發提升的程序化方法,您應該看看this other question(不一定是接受的答案,但是所有其他答案)。我仍然投票結束,但作爲一個愚蠢的人,而不是轉向超級用戶。從批處理你可能想看看「runas」命令,但它仍然需要用戶確認。

+0

此答案不適用於我。我正在尋找一種編程方式來管理代碼權限。 – Berming 2010-10-02 00:11:50

+0

您不能以編程方式取消保護需要管理員權限的內容,除非您使用完全(提升)的管理員權限運行,而這樣做是一個非常糟糕的主意,使計算機容易受到各種惡作劇的攻擊。您最好的選擇是觸發提升提示,而不是簡單失敗。 – 2010-10-02 00:19:16

+0

好的,提示+1。我想你鏈接的線程的本質是觸發Windows顯示其GUI提示。這個想法會做。希望有人知道如何做到這一點。 – Berming 2010-10-02 00:27:28

0

我在批處理文件的所有批處理文件中使用它來檢查批處理文件開始時的管理權限?

@echo off 
goto permissionCheck 

:permissionCheck 
    echo Checking permissions... 

    SET adminRights=0 
    FOR /F %%i IN ('WHOAMI /PRIV /NH') DO (
     IF "%%i"=="SeTakeOwnershipPrivilege" SET adminRights=1 
    ) 

    IF %adminRights% == 1 (
     echo Elevated permissions confirmed. 

     pause >nul 
    ) ELSE (
     echo Elevated permissions absent. 
     echo. 
     echo This file needs to be run as an Administrator. 
     echo. 
     echo Close this window, right-click on the file and click "Run as Administrator". 
     echo OR 
     echo Log on to an Administrator account and run this file normally. 

     pause >nul 
    ) 

我知道,這種解決方案並不能使你複製到system32沒有管理員權限,但看到你需要管理員權限,還有周圍沒有辦法,我以爲我會提供這種解決方案。

相關問題