2013-03-18 61 views
4

我有一個提升控制檯運行一些bat文件。讓這個控制檯以高級模式運行是強制性的,因爲它能夠執行一些任務,如管理網絡共享等,而無需請求權限。但有時腳本也必須啓動一些不希望運行提升的應用程序。所以我們希望我們的升高的蝙蝠在未升高的模式下開始應用。在Windows上有沒有內置的方法可以做到這一點?使用DOS命令START開始到當前爲止,進程已啓動。作爲限制用戶從提升腳本啓動進程

順便說一下,該機器是Windows 7旗艦版x64。

我知道這isue已經在許多問題(this collects many of them)編程討論,但我們的要求是在運行CMD腳本蝙蝠,以及任何獨立的可執行文件,可以幫助我們的任務,如的NirCmd,7Z等

說明:我們已經有一個計劃的任務,啓動控制檯提升,並提升控制檯不是這個答案的問題。

+0

順便說一句,我已經閱讀[這篇文章](http://blogs.technet.com/b/markrussinovich/archive/2006/03/02/running-as-limited-user-the-easy -way.aspx),並且似乎是目前最好的解決方案。但我會很高興聽到別人的想法。 – 2013-03-18 09:10:27

+1

我認爲PsExec可能是您最簡單,最直接的解決方案。 – 2013-03-18 14:22:06

回答

8

內置Windows方式START RUNAS ...允許您以受限用戶的身份運行進程。這裏有一個例子:

runas /trustlevel:0x20000 cmd.exe 

反正,有一個過程的執行權限之間的一些內部分歧執行的方式和與UAC用戶界面的另一個開始通過正常的用戶交互啓用(explorer.exe的,我的意思是,執行從文件瀏覽器或從開始菜單)。

  • 在過程中通過運行方式(右),我們錯過了一些權限,禁用開始: Process Explorer screenshot showing execution permissions differences
  • 在過程中通過運行方式開始(右)管理員有一些permisions設置在過程: Process Explorer screenshot showing differences on user permissions over the processes

第三方應用程序:我們可以使用PSExec實現我們的目標,我們可以在Windows Sysinternals的PSTools上找到獨立的可執行文件。這裏有一個例子:

psexec -l -d cmd.exe 

我已經看到了非常深入的問題,我注意到任何運行權限或安全標誌沒有區別。

Microsoft Technet blogs

PSEXEC使用CreateRestrictedToken API創造一個安全環境,被稱爲一個道理,那就是它自己的精簡版本,消除行政特權和組成員。生成一個看起來像Windows分配給標準用戶的令牌後,Process Explorer將調用CreateProcessAsUser以使用新令牌啓動目標進程。

這些都是我經過數小時的研究後得到的最好的暗示;任何可以提供更多細節的人都會受到歡迎。

1

真的不是我的專業領域,而是START RUNAS ...或者AT是否符合法案?

+0

好點。我已經嘗試了'runas/trustlevel:0x20000 cmd.exe'。儘管我發現了很多我不喜歡的東西:首先,當試圖執行程序時,它會在%path%目​​錄中查找它,但它不會掃描[註冊表中的應用程序路徑]( http://weblogs.asp.net/whaggard/archive/2004/04/11/111232.aspx),所以例如「cmd」的作品,但「iexplore」沒有。當我以這種方式而不是從用戶界面開始時,我也發現了過程執行權限的差異。我會更深入地回顧最後的結論。 – 2013-03-18 15:05:34

+0

我會發布完整的答案,編輯你的優點是你的。感謝您的幫助。 – 2013-03-19 17:54:00

+1

@Áxel您的解決方案比Peter更加廣泛。你應該把它作爲一個新的答案。 – madth3 2013-03-19 18:01:14