吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1919|回复: 7
收起左侧

[其他原创] C#给文件夹赋予权限

[复制链接]
Naylor 发表于 2023-1-3 15:54

遇到的问题

在使用WPF开发桌面EXE的过程中,遇到了Webview2无法往C盘写入文件的问题

解决思路

  • 程序启动的时候使用代码给文件夹赋予高权限
  • Webview2指定UDF

实践

本文讨论思路1的实现

C# 给文件夹赋权限


   private void InitWebView2DirAccess()
        {
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                string webview2DataDir = path + "WpfApp1.exe.WebView2";
                Log.LogInfo.Info("InitWebView2DirAccess-webview2DataDir=" + webview2DataDir);
                bool isModified = false;
                DirectoryInfo dir2 = new DirectoryInfo(webview2DataDir);
                //所有访问权限
                System.Security.AccessControl.DirectorySecurity dirSecurity = dir2.GetAccessControl(AccessControlSections.All);
                //文件ACL继承
                InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
                //追加Eereryone用户组完全控制权限
                FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
                //追加Users用户组完全控制权限
                FileSystemAccessRule usersFileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);

                dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out isModified);
                Log.LogInfo.Info("isModified-1=" + isModified);
                dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out isModified);
                Log.LogInfo.Info("isModified-2=" + isModified);
                //设置访问权限
                dir2.SetAccessControl(dirSecurity);
                Log.LogInfo.Info("InitWebView2DirAccess-success");

            }
            catch (Exception ex)
            {
                Log.LogError.ErrorFormat(@"InitWebView2DirAccess-error:msg={0};堆栈={1}", ex.Message, ex.StackTrace);
            }
        }

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
lene + 1 + 1 我很赞同!
Tonyha7 + 1 + 1 实用
hrpzcf + 1 + 1 我很赞同!
supercilious + 1 + 1 用心讨论,共获提升!
落红护花 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lizf2019 发表于 2023-1-3 21:35
直接设置管理员身份运行可以吗?
 楼主| Naylor 发表于 2023-1-4 09:31
lizf2019 发表于 2023-1-3 21:35
直接设置管理员身份运行可以吗?

1:设置管理员运行也无法解决webview2这个控件无法写入文件的问题,因为安装在c盘,安装在其他盘符没有这个问题。
2:wpf程序设置管理员运行需要编写程序清单文件,app.manifest
liangxinbeilang 发表于 2023-1-10 11:00
 楼主| Naylor 发表于 2023-1-10 17:30
skyff1 发表于 2023-1-10 10:27
这样子搞会被杀毒软件误杀吧

不会,如果有修改注册表之类得操作,360之类得就报
lene 发表于 2023-1-13 17:53
支持一波,不过描述感觉怪怪的,与其说给文件夹赋予最高权限,应该是允许普通用户也可以完全控制/访问文件夹。
 楼主| Naylor 发表于 2023-1-13 18:06
lene 发表于 2023-1-13 17:53
支持一波,不过描述感觉怪怪的,与其说给文件夹赋予最高权限,应该是允许普通用户也可以完全控制/访问文件 ...

对的,最近项目紧张,不懂技术的领导天天在后面催,文章写的有点糙了,没有花时间打磨
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表