2

我使用Visual Studio 2012和Visual Basic .NET來構建應用程序(與Windows 7)的Visual Basic .NET訪問路徑「C:」被拒絕

我目前構建安裝包和我安裝到另一臺電腦上測試程序。

當我通過我的應用程序創建的txt文件,我是越來越「訪問路徑‘C:\’被拒絕」錯誤

我知道,我是用的子帳戶來運行我的應用程序。

如果我以管理員身份運行,它工作正常。但是,該程序應該能夠在不使用管理員帳戶的情況下運行應用程序。

這些是我迄今爲止試圖解決這個問題。

首先,更改寫在「程序文件夾」文件,如位置「C:\程序文件\我的應用」

然而,它沒有工作

,我試圖改變

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

在app.config中

不過,我改爲 「requireAdministrator」 後,我收到編譯錯誤

ClickOnce does not support the request execution level 'requireAdministrator'. WindowsApplication2 

,我去的電腦 - >管理器 - >服務 - >和啓用應用程序體驗

但是,它不起作用。

我不知道該怎麼做這個問題。

有沒有人知道任何解決方案?

感謝

+0

程序文件文件夾和C:\都是管理員。用戶特定的文件夾位於用戶appdata文件夾下(例如Chrome安裝位置)。簡而言之,不是管理員的用戶不應該能夠對整個系統進行更改,只能修改他們自己的配置文件 – Basic

+0

Basic //感謝您回答我的問題。你認爲,我可以在公共文件夾上寫入文件嗎? (沒有管理員權限) –

+0

您應該可以寫入任何公用文件夾。要獲取特殊文件夾,請使用'Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)'(顯然,[查看可以自動定位的文件夾選項](http://msdn.microsoft.com/en-us/ library/system.environment.specialfolder.aspx))'SpecialFolder.CommonDocuments'或'SpecialFolder。CommonApplicationData'也可能有用。確保你不會假設你知道文件夾的位置 - 例如我的Program Files文件夾在我的D盤驅動器上 – Basic

回答

1
Dim UserAccount As String = "<user here>" 'Specify the user here 
Dim FolderInfo As IO.DirectoryInfo = New IO.DirectoryInfo("path") 
Dim FolderAcl As New DirectorySecurity 
FolderAcl.AddAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.Modify, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow))FolderAcl.SetAccessRuleProtection(False, False) 
FolderInfo.SetAccessControl(FolderAcl) 

注意你必須添加:Imports.System.Security.AccessControl

通過我是從這兒來的路上:Give folder full access when created所以學分去找那個人。希望這可以解決問題:)