1. 程式人生 > >zz: virsual studio等AP無法訪問網路對映驅動器(netmap drive)的解決辦法

zz: virsual studio等AP無法訪問網路對映驅動器(netmap drive)的解決辦法

ZZ from: http://www.tuicool.com/articles/M3Mrmyy

【問題產生】

問題最初是在administrator許可權下,visual studio 開啟網路磁碟下的檔案報錯。經過幾次除錯,最終發現是問題是在 管理員 許可權下,vs無法訪問網路磁碟。

Console.Write( System.IO.File.Exists(path));

該結果返回False。為了確認是由於許可權問題引起,使用 非管理員 許可權開啟vs,執行上面的程式,結果返回True。

至此問題確立: win7/win8下,使用管理員許可權開啟VisualStudio,無法訪問網路磁碟。

【問題分析】

首先讓我想到的是很久之前,發現用管理員許可權開啟VisualStudio後,沒辦法把檔案直接拖拽到VS中開啟,我的理解是,管理員許可權下的VS比普通檔案有更高的“安全級別”,windows不允許從低級別向高級別傳送呼叫命令,事實上也確實如此。

解決方案一:使用系統administrator賬戶

實驗一:

  1. 進入C:\Windows目錄
  2. 找到並開啟notepad.exe(使用者許可權)
  3. 拖拽其他文字檔案到開啟的記事本應用,發現是可以正常開啟的,然後關閉所有檔案
  4. 右鍵以管理員許可權開啟notepad.exe
  5. 再拖拽同樣的文字檔案到記事本應用,這時候可以看到是沒有辦法將檔案拖拽進來的

知道問題由許可權引起,那麼接下來就是如何設定許可權。

由於VS是管理員許可權而其他檔案是使用者許可權,所以考慮使用administrator賬戶,讓所有檔案都擁有管理員許可權。

  1. 執行 lusrmgr.msc
  2. 本地使用者和組--使用者--administrator--去掉“賬號已禁用”的勾,確認退出
  3. 切換使用者,使用administrator使用者登入

ps:win7家用版沒有 lusrmgr.msc ,開啟administrator的方法這裡不再細說。

這時候所有檔案都擁有管理員許可權,測試一下問題,發現可以正常返回True了。但使用Administrator是一種不安全的方式。而且也比較麻煩,所以繼續探究解決方案。

解決方案二:幹掉UAC

在網上看到一篇論文 《Vista系統管理員許可權下檔案禁止拖拽解決方案》 ,這和我的問題非常相近,文章提了三點:介紹UIPI,提出修改登錄檔的方式解決問題,提出使用windows api方式解決問題。

UIPI:User Interface Privilege Isolation(使用者介面特權隔離),詳細的介紹可以參考微軟白皮書 ,簡單來說,它是UAC的核心,做安全許可權用的。說到這裡,問題更專業化了,MSDN的Blog中有人遇到了同樣的問題( Pat's Windows Development Blog),這裡面用專業的術語描述了我最開始的理解:

Lower Privilege Processes Can’t Interfere with Higher Privilege Processes

當然,裡面也提出瞭解決方案:不要使用管理員許可權,或者不要開啟uac。

實驗二:

在UIPI的微軟白皮書中提到使用“Process Explorer”檢視UIPI,這裡也作為一個實驗:

  1. 開啟Process Explorer,在GridView的Header上右鍵,選擇Select Columns,勾選Integrity Level
  2. 觀察所有應用的UIPI,如果是以普通使用者許可權開啟,那麼我們最多能看到Medium的level圖2
  3. 如果用右鍵管理員開啟,所有的UIPI才可以看到圖3

這個實驗也說明了低許可權不能夠訪問高許可權的問題。

現在回到論文中,裡面提到通過修改登錄檔的方式關閉UIPI: 將HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\System 下的 EnableUIPI 設定成0

進入登錄檔編輯器,發現並沒有這樣一個值,不過卻發現了EnableLUA,其實EnableUIPI是visita下的值,而在win7/win8下則是EnableLUA.

把 EnableLUA 的值設成0,重啟計算機,然後以管理員許可權執行VS,測試問題,結果返回True。其實關閉UAC和使用administrator賬戶是一樣的效果,都是獲取了最高許可權,但都是不安全的,能不能尋找一個簡單又安全的方法來解決問題?

ps:論文中提到的第三點是使用windows api,有興趣的可以閱讀ChangeWindowMessageFilter 相關資料,其原理是將拖拽等操作新增到白名單,這樣就不會被UIPI攔截。但我們的問題並不是拖拽問題,而是找不到路徑,所以這裡不再過多討論。

解決方案三:在管理員許可權下配置磁碟對映

經過上面的分析,對UAC逐步有了更深的理解,但想一想,跟UAC扯上關係,不管哪一種方法都麻煩,而且在除錯中又發現了下面的問題:

實驗三:

  1. 配置一個網路磁碟對映(Z盤)
  2. 用普通使用者許可權開啟記事本或者VS---檔案---開啟,觀察檔案資源管理器。這裡是可以看到Z盤的。
  3. 管理員許可權開啟記事本或者VS---檔案---開啟,再觀察檔案資源管理器。發現根本就沒有Z盤。圖6

其實問題一開始就走彎路了,難怪 System.IO.File.Exists(path) 會找不到路徑,這裡壓根就沒有Z盤。那我們在這裡配置一下網路磁碟對映Y盤:

配置完成後可以看到Y盤了,然後執行一下程式,找找Y盤的路徑,結果返回True。然而我們在“我的電腦”中卻看不到Y盤,如果以普通使用者許可權開啟檔案資源管理器,也看不到Y盤(除非是administrator賬戶,Z盤Y盤都可見),這麼說來,管理員許可權和使用者許可權下的Z盤Y盤就像是在兩個世界,這也就是UAC的功能不是麼?隔離,sandbox!

【問題總結】

至此所有問題全部解決。解決方法如下:

  1. 使用administrator賬戶

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\System 的 EnableLUA 值改為0,重啟即可

  3. 在管理員許可權下開啟VS或者其他工具,在檔案資源管理器中設定網路磁碟對映即可

相關推薦

zz: virsual studioAP無法訪問網路對映驅動器(netmap drive)的解決辦法

ZZ from: http://www.tuicool.com/articles/M3Mrmyy 【問題產生】 問題最初是在administrator許可權下,visual studio 開啟網路磁碟下的檔案報錯。經過幾次除錯,最終發現是問題是在 管理員 許可權下,vs無法訪問網路磁碟。 Consol

virsual studioAP無法訪問網路對映驅動器(map network drive)的解決辦法(二)

前面一篇文章已經提到了問題所在: 直接通過 對映網路(map network drive) 硬碟,run as Administrator的AP會出現無法訪問的情況,這是因為直接通過explorer上的map network drive按鈕進行對映網路硬碟的動作是沒有run

tomcat釋出程式無法訪問網路對映解決方法

系統環境:Tomcat6/JDK1.6/JAVA 伺服器:windows2003,伺服器映射了一個網路硬碟     開發環境下發布系統XP能夠正常訪問對映過來的磁碟內容,但是系統部署到正式伺服器時發現,程式不能對網路硬碟進行檔案讀取。排除了程式出錯的原因,初步估計是由於使

Windows Server 2019 無法訪問【設置】的解決辦法

process ext mark http mini con vpd images 控制 問:使用【設置】的時候,會提示你無法訪問或者是沒有適當的權限 答:初步估計是【設置】的BUG,現在提供處理辦法有人說是權限問題,我們看一下:CMD:control userpasswo

centos7 無法啟動網路(service network restart)錯誤解決辦法

# service network restart 錯誤資訊 Restarting network (via systemctl):  Job for network.service failed because the control process exited wit

win7 win10開啟網路訪問(網路訪問 無法訪問 網路訪問需要輸入密碼 問題處理)

狂客原創,轉載請註明。侵權必究!   右鍵單擊桌面的“網路”圖示 選擇“屬性”。 在彈出的“網路和共享中心”視窗,點選“更改高階共享設定”。 參考文章:https://jingyan.baidu.com/article/c275f6ba32ca5ce33d75673c.html 設定

Fiddler設定代理後,iphone手機無法訪問網路的全面解決辦法

好久不抓手機包,都有些忘記了,電腦上軟體都在,原本是Fiddler4,現在已自動升級到V5。 入主題吧,首先Fiddler設定好代理,然後手機安裝證書好了,設定手機代理,結果iphone無法訪問網路,網上搜索一堆所謂的解決辦法,但都因文章太老舊而無法解決當下的問題,最終居然是iphone的ios版本高於10

區域網常見問題解決方案之你可能沒有許可權使用網路資源無法訪問網路上的芳鄰

最近公司區域網一臺公共的計算機,工作組的其他成員不能訪問該計算機,折騰了好久,在網上終於找到有效的解決方案,分享如下: 計算機系統:Windows XP 方法一: 一、在工具->資料夾選項->檢視,將"使用簡單檔案共享"前面的勾勾去掉;二、在控制面板->

解決VMware下centOS 7無法訪問網路的問題經過

問題描述:         在安裝centOS 7是沒有對網路進行設定,而後在使用過程中發現虛擬機器中的瀏覽器無法訪問網路,虛擬中的網路設定如下: 經過百度後發現,虛擬機器的網路設定是沒有問題的,那

Visual Studio 2012出現“無法訪問T-SQL元件和安裝了不相容伯 DacFx版本”的解決辦法

OS : Windows Server 2012 或 Windows 8 IDE : Visual Studio 2012 SP3 SQL : SQL Server 2012 出現原因 給系統打了MS推出的與SQL Server相關的補丁。再使用Visual Studio 2012 時就發現VS

ubuntu下Samba伺服器的配置和使用 以及 Samba服務無法訪問 網路名不再可用的問題

Samba伺服器在兩種不同作業系統間架起了一座橋樑,使Linux系統和Windows系統之間能夠通訊。通過Linux作業系統下的samba服務,可以實現Windows主機訪問Linux下共享檔案的功能,為廣泛的Linux愛好者提供了極大方便。1. samba伺服器安裝(1)在

SourceInSight無法訪問網路驅動器解決方案

將虛擬機器目錄對映到windows主機中的Z盤,但是SI4使用中,試圖新增Z盤中檔案時出錯,而檔案管理器中可以正常訪問,將Z:\修改為對應的網路目錄後可以訪問(我的是\\192.168.174.128\share),猜想可能是因為使用了管理員許可權執行SI4導致windows

Android 9.0 某些應用無法訪問網路

將App安裝在 Android 9.0的裝置上發現,竟然無法登入了,後來查閱資料後發現原來是Android 9.0預設使用http

關於mac android studio 與svn 解除關聯後 無法再次share (Subversion) 的解決辦法

pre lac lan n) con oid directory ppi files Android studio 把工程share 到 svn 上面,可是一不小心忘了 ignore files 的設置,結果沒辦法,把svn 上的刪掉再重新share 一次,先接觸本地代碼與

雙系統Ubuntu無法訪問Win10磁盤分區解決方法

linux 磁盤訪問 雙系統 今天在ubuntu下進Windows的分區下拷個文件,當打開時出錯了,而且是全部的NTFS盤都出錯,其中一個分區的錯誤顯示如下:Error mounting /dev/sda3 at /media/struggle6688/164AFCB44AFC91AB: Com

無法訪問Win7電腦磁盤的解決方法

電腦 計算機 href 本地組策略編輯器 proc 就是 圖片 對話框 mage 近來有使用Win7系統的朋友反應在準備打開電腦磁盤時,發現電腦磁盤打不開,還彈出一個窗口,提示“本次操作由於這臺計算機的限制而被取消,請聯系管理員”。這是什麽原因導致的呢?下面就為大家介紹一下

無法訪問hadoop yarn8088端口的解決方法

22端口 sta ger source com 分享圖片 inf mas 主機 1、檢查是否正確的啟動了resourcemanager服務   若是沒有啟動,請檢查yarn-site-xml配置 2、若是啟動了   1、檢查客戶機和虛擬機之間是否能夠相互ping通   2、

Win10無法訪問Samba共享資料夾【解決方案】

相信不少人,已經被這個問題困住了,解決方案如下: 1. 進入“控制面板”,進入“程式和功能“ 2、選擇“啟用或關閉Windows功能” 3、在功能列表中確保選中“SMB1.0/CIFS檔案共享支援”,然後確定安裝,重新啟動電腦即可生效。 4、然後就可以正常

windows7無法訪問windows2003的共享檔案的解決方法。

【問題描述】: Windows 7 無法訪問Windows2003共享,出現“系統錯誤 86。網路密碼不正確”,但是這些問題都是正確的,經分析問題可能出現在使用者身份驗證上。 【解決方法】: 一、要解決此問題,請在Windows 2003 的或基於 Windo

Ubuntu 無法訪問windows下的磁碟的解決方法

目前用的是win8+ubuntu 14.04雙系統,在ubuntu 下有時會訪問不了windows下的分割槽,下面寫下解決方案。 用 ntfs 命令來解決:    sudo apt-get install ntfs-3g   一般點選對應磁碟會提示是哪一個分割槽, 比