Vb.net Visual Basic.NET访问路径';C:\&x27;被拒绝

Vb.net Visual Basic.NET访问路径';C:\&x27;被拒绝,vb.net,visual-studio-2012,access-denied,permission-denied,Vb.net,Visual Studio 2012,Access Denied,Permission Denied,我正在使用Visual Studio 2012和Visual Basic.NET构建应用程序(使用Windows 7) 我目前正在构建安装包,并将其安装到另一台pc上以测试该程序 当我用我的应用程序创建txt文件时,我遇到了“访问路径'C:\'被拒绝”错误 我知道我正在使用子帐户运行我的应用程序 如果我以管理员的身份运行,它工作得很好。但是,程序应该能够在不使用管理员帐户的情况下运行应用程序 这些就是我目前试图解决的问题 首先,我将位置更改为在“程序文件文件夹”中写入文件,例如“C:\Progr

我正在使用Visual Studio 2012和Visual Basic.NET构建应用程序(使用Windows 7)

我目前正在构建安装包,并将其安装到另一台pc上以测试该程序

当我用我的应用程序创建txt文件时,我遇到了“访问路径'C:\'被拒绝”错误

我知道我正在使用子帐户运行我的应用程序

如果我以管理员的身份运行,它工作得很好。但是,程序应该能够在不使用管理员帐户的情况下运行应用程序

这些就是我目前试图解决的问题

首先,我将位置更改为在“程序文件文件夹”中写入文件,例如“C:\Program file\My App”

然而,它没有起作用

第二次,我试图改变

 <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
第三次,我进入计算机->管理器->服务->并启用应用程序体验

但是,它不起作用

我真的不知道该怎么解决这个问题

有人知道解决办法吗

谢谢

Dim UserAccount As String=“”在此处指定用户
Dim FolderInfo As IO.DirectoryInfo=新IO.DirectoryInfo(“路径”)
Dim FolderAcl作为新的DirectorySecurity
FolderAcl.AddAccessRule(新的FileSystemAccessRule(用户帐户、FileSystemRights.Modify、InheritanceFlags.ContainerInherit或InheritanceFlags.ObjectInherit、PropagationFlags.None、AccessControlType.Allow))
FolderAcl.SetAccessRuleProtection(False,False)
FolderInfo.SetAccessControl(FolderAcl)
注意:您必须添加:Imports.System.Security.AccessControl


顺便说一句,我是从这里得到的:所以功劳归于那个人。(Jacques Bronkhorst)希望这能解决问题:)

程序文件文件夹和C:\都是管理员专用的。特定于用户的文件夹位于用户appdata文件夹下(例如Chrome的安装位置)。简而言之,不是管理员的用户不应该在系统范围内进行更改,只能对自己的个人资料进行更改。basic//谢谢您回答我的问题。你认为,我能把文件写在公用文件夹里吗??(未经管理员许可)您应该能够写入任何公用文件夹。要获取特殊文件夹,请研究使用
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
(显然,
SpecialFolder.CommonDocuments
SpecialFolder.CommonApplicationData
也可能有用。确保您不认为您知道文件夹的位置-例如,我的程序文件文件夹位于我的
D:
drive上。您说您正在构建安装包(这意味着.msi),但您似乎正在使用ClickOnce。ClickOnce应用程序将仅作为标准用户运行,不会安装在程序文件中,而是深入用户配置文件中。我认为您需要澄清您试图做什么,然后选择适当的部署方法。
 <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
ClickOnce does not support the request execution level 'requireAdministrator'.  WindowsApplication2
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)