在 AutoCAD 运行时编辑程序文件目录中的设置 .txt 文档

Edit Settings.txt Document within Program Files directory during AutoCAD runtime

提问人:John89 提问时间:1/21/2021 最后编辑:John89 更新时间:4/6/2021 访问量:110

问:

我正在尝试将AutoCAD用户的设置存储在其Program Files下的目录中。最初,我将所有内容都存储在用户收藏夹文件夹中,但我想将所有插件文档/文件保存在同一目录中。因此,我一直在尝试各种选项来在运行时获得管理员权限,但仍然没有成功。这或多或少是我最近测试的:

Public Shared Sub GetAdminAccess()
    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
    Dim curIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
    Dim principalPerm As PrincipalPermission = New PrincipalPermission(Nothing, "BUILTIN\Administrators")
    principalPerm.Demand()
End Sub

<PrincipalPermissionAttribute(SecurityAction.Demand, Role:="BUILTIN\Administrators")>
Private Shared Sub CreateSettingsFile()
    Try
        IO.File.Create(SettingsFilePath)
        SettingsFileData = DefaultFileData
        Property_WindowsOnTop = True
        Property_SaveBackups = False
        Property_SkipCreateSite = False
        Property_AlignmentZoomExtents = ToFullExtents
        Property_SaveBackups_Method = _TxtValue_Generic_None
        Property_SaveBackups_MainDirectoryPath = _TxtValue_Generic_None
        Call SetUserSettings(SettingsFileData)
        Call SetPropertySettings()
    Catch IOE As IO.IOException
        MsgBox(IOE.Message)
    Catch Ex As Exception
        MsgBox(Ex.Message)
    End Try
End Sub

我的许多尝试都出现了同样的错误:

“应用程序尝试执行安全策略现在允许的操作。若要授予此应用程序所需的权限,请与系统管理员联系,或使用 Microsoft.NET Framework 配置工具。

如果单击“继续”,应用程序将忽略此错误并尝试继续。

主体权限请求失败。

vb.net 权限 AutoCAD 程序文件

评论

0赞 Flydog57 1/21/2021
如果没有管理员权限,应用无法写入 Program Files 文件夹。别这样。如果需要共享的专用位置,请写入文件夹 AppData (System.Environment.SpecialFolder.ApplicationData )
0赞 John89 1/22/2021
@Flydog57我继续接受你的建议。我很高兴我也这样做了,因为现在每次重新安装更新的插件时都不会替换 Settings.txt。这正是我从一开始就希望实现的目标。我认为这是特定于该目录的?txt 文档在存储在任何其他目录中时将始终被替换。无论如何,出于好奇,为什么不从Program Files目录中获得更改文档的管理员权限呢?
0赞 Flydog57 1/22/2021
程序文件文件夹(及其下的子文件夹)受管理员保护,以防止程序将已安装的可执行代码替换为恶意等效代码。如果需要使用 appData 文件夹获取特定于应用的数据。我喜欢对设置文件(特别是如果它们是每个用户)所做的是使用 IsolatedStorage。我通常将我的设置保存在 XML 文件(具有特定于应用的架构)中,在应用启动时从独立存储读取该设置,并在应用关闭时写回该文件
0赞 Flydog57 1/22/2021
我添加了一个答案,以便您的问题有一个明确的答案(即,这就是本网站的目的)。如果它有用,请投赞成票。如果它解决了您的问题,请接受它。
0赞 John89 1/23/2021
谢谢@Flydog57!我试过给它投票,但我需要 15 个声望点才能公开。但是,我会在这条消息中明确表示,我 100% 同意并感谢您的帮助。我对编程非常陌生,以前从未真正接触过这样的人,所以我非常无知。我正在努力进入学校,尽可能多地学习。理想情况下,我很想知道关于计算机的一切知识;但我知道这对一个人来说是不可能的。如果您有任何建议可以帮助我学习编程,请告诉我。

答:

1赞 Flydog57 1/22/2021 #1

如果没有管理员权限,应用无法写入 Program Files 文件夹。程序文件文件夹(及其下的子文件夹)受管理员保护,以防止程序将已安装的可执行代码替换为恶意等效代码。只是不要那样做。

如果需要特定于应用的数据,请使用 appData 文件夹。您可以使用 和System.Environment.SpecialFolder.ApplicationDataEnvironment.GetFolderPath

熟悉枚举(和 )。它们是访问 Windows 操作系统中所有知名文件夹的正确方法。SpecialFolderSystem.IO.Path.Combine