2015-04-16 43 views
0

我們有一個顛覆系統,並在中央服務器上運行。目前,我可以通過網絡共享訪問該svn存儲庫。由於這不是很好的做法,我會關閉該網絡共享,並且只能通過「svn」命令訪問我的svn(我使用的是TortoiseSVN客戶端)。調用進程/批處理以提升權限執行

隨着新的項目將在未來開始,我和我的同事們必須能夠在該服務器上創建新的存儲庫。對於創建,您需要在該服務器目錄上有寫權限,但我不想那樣做。另外我不想每次都跑到我們的管理員(所有這些對我們的管理員都是好的,我也有他的支持)。

首先,我的想法是:在將創建存儲庫的服務器上觸發一個進程。但是,如果我不是服務器管理員(嘗試使用WMI VB腳本),那麼在這裏我就會遇到如何觸發進程的問題。因此,在腳本執行過程中,如何提升調用者的權限會是一個問題。我不想以純文本形式將管理員密碼存儲在腳本或批處理文件中。

其次,這可以在一些其他的形式嗎?你們如何創建你的存儲庫?

回答

1

Afaik CMD中沒有自動提升的方法。唯一能做的就是使用windows schduler。你可以寫一個bat文件來執行你所需要的所有命令。然後用調度程序創建一個任務並告訴它運行bat文件。在創建過程中,將「觸發器」部分留空,選中「以最高權限運行」框,輸入具有所需權限的用戶帳戶並輸入密碼。然後進入「設置」並選中「允許任務按需運行」框。

現在的第二部分(可選)。在服務器上執行用戶策略,以便您希望能夠執行進程的用戶可以觸發服務器上的計劃任務。您也可以在服務器上將用戶PC輸入爲「可信」。有幾種方法可以實現這一點。但是,之後用戶必須能夠在服務器上執行計劃任務。

現在你完成了!如果您已完成可選部分,則用戶可以使用SCHTASKS /RUN /S <RemoteServerName> /TN "<task name>"來觸發任務。不需要存儲憑據,腳本以elevetad權限運行。

如果您沒有使用SCHTASKS /RUN /S <RemoteServerName> /U username /P password /TN "<task name>"

+0

聽起來非常好!必須與我的管理員討論。你是否看到一種優雅的方式將至少一個參數傳遞給觸發用戶的schtask-runned-batch? (如存儲庫名稱) – jwsc

+0

不,這是不可能的。 Windows安全策略不允許這樣做,因爲這將是一個很大的安全漏洞。想象一下以管理員權限運行並以命令行爲界限的任務。類似於'SCHTASKS/RUN/S /TN「/ param」CMD/c format C:/ y「';-)。你可以嘗試'SCHTASKS /改變......'在執行之前熟練地完成你的任務,但我之前沒有嘗試過。 – MichaelS

+0

沒問題,我會以某種方式做這件事。有一些想法。 – jwsc

相關問題