修改双域应用安装路径

问题:在机主空间使用微信正常,在私人空间使用微信发送朋友圈的图片无法显示;

原因:微信升级版本后导致的,与微信协商后,答复是微信不支持多用户,故微信不针对当前情况做出修改。

解决措施:针对微信修改Android原生机制,改变私人空间微信的安装路径。

基本思路:不改变机主空间的安装逻辑,只需要针对私人空间做出改变即可;保存数据的路径不变,只改变安装位置(修改保存apk和lib的目录)。

修改过程如下:

1、在PackageManagerService构造方法中调用ActivityManagerNative.getDefault()返回结果为空。

2、定义全局变量:

    private File mWeChatInstallDir = null;
    private PackageInfoLite appPkgLite;

3、在PackageManagerService的copyApk方法中,创建/data/app/wechat目录,使用命令行看不到该目录?

可以在PackageManagerService的构造方法中创建:

if (FEATURE_SECURE_SPACE) {
     mWeChatInstallDir = new File(mAppInstallDir, "wechat");
     mWeChatInstallDir.mkdirs();
     FileUtils.setPermissions(mWeChatInstallDir.toString(),
         FileUtils.S_IRWXU|FileUtils.S_IRWXG
         |FileUtils.S_IROTH|FileUtils.S_IXOTH,
         -1, -1);
     Slog.d(TAG, "weChatAppDir = "+mWeChatInstallDir);
}

scanDirLI(mWeChatInstallDir, 0, scanFlags | SCAN_REQUIRE_KNOWN, 0);
4、在handlerStartCopy()方法中,为appPkgLite赋值:

appPkgLite  = pkgLite;

5、在startCopy()方法中修改路径,

int FLAG_SECURE_BANKING_SPACE = 0x00010000;
                    boolean isSecureSpace = false;
                    UserInfo currentUser = null;

                    try {
                        currentUser = ActivityManagerNative.getDefault().getCurrentUser();
                    } catch (RemoteException e) {
                        e.printStackTrace();
                    }
                    if ((currentUser.flags & FLAG_SECURE_BANKING_SPACE) == FLAG_SECURE_BANKING_SPACE) {
                        isSecureSpace = true;
                    }

                    Slog.d(TAG, "isSecureSpace: " + isSecureSpace + "; appPkgLite.packageName: "
                        + appPkgLite.packageName + "; mWeChatInstallDir: " + mWeChatInstallDir);

                    if (appPkgLite.packageName.equals("com.tencent.mm") && isSecureSpace) {
                        final File wechattempDir = mInstallerService.allocateStageDirLegacy(volumeUuid,
                                mWeChatInstallDir);

                        codeFile = wechattempDir;
                        resourceFile = wechattempDir;
                    } else {
                        final File tempDir = mInstallerService.allocateStageDirLegacy(volumeUuid);
                        codeFile = tempDir;
                        resourceFile = tempDir;
                    }
6、在PackageInstallerService类中封装allocateStageDirLegacy方法:

public File allocateStageDirLegacy(String volumeUuid, File weChatFile) throws IOException {
        File stageDir = null;

        synchronized (mSessions) {

            try {
                final int sessionId = allocateSessionIdLocked();
                Slog.d(TAG, "sessionId = "+sessionId);
                mLegacySessions.put(sessionId, true);

                /*if (weChatFile.exists()) {
                    Slog.d(TAG, "wechat, tempStagingDir is exist : "+ weChatFile);
                } else {
                    Slog.d(TAG, "wechat, tempStagingDir is not exist.");
                }*/

                stageDir = new File(weChatFile, "vmdl" + sessionId + ".tmp");
                Slog.d(TAG, "stageDir = "+stageDir.getPath());
                /*if (!stageDir.exists()) {
                    Slog.d(TAG, "wechat, stageDir is not exist");
                } else {
                    Slog.d(TAG, "wechat, stageDir is exist.");
                }*/

                prepareStageDir(stageDir);

            } catch (IllegalStateException e) {
                throw new IOException(e);
            }
        }

        return stageDir;
    }

7、修改完毕。




<think>好的,我现在需要回答用户关于如何安装服务器的问题。首先,我得确保自己理解服务器的基本概念。服务器,也就是控制器(Domain Controller,DC),主要用于Windows网络环境中,负责管理用户认证、资源访问等。用户可能是在企业环境中需要搭建一个集中管理的网络,所以需要安装服务器。 接下来,我应该考虑用户可能的操作系统环境。最常见的应该是Windows Server系列,比如Windows Server 2016、2019或2022。用户可能对这些版本不太熟悉,需要分步骤指导。同时,用户可能没有安装服务器,所以需要从基础开始,比如系统要求、安装前的准备。 然后,我需要回忆安装服务器的具体步骤。首先,安装Windows Server操作系统是前提。安装完成后,需要配置静态IP地址,因为控制器需要有固定的IP。接下来,安装Active Directory服务(AD DS)角色,这可以通过服务器管理器或者PowerShell来完成。安装完角色后,需要将其提升为控制器,这可能包括创建新林(新的)或添加到现有,根据用户的情况来定。 用户可能遇到的问题包括DNS配置是否正确,因为AD DS依赖于DNS。在安装过程中,如果DNS服务器未正确配置,可能会导致问题。所以,在步骤中需要提醒用户确保DNS设置正确,或者让安装向导自动配置DNS。 另外,需要考虑是否需要设置林功能级别和功能级别,这取决于用户使用的Windows Server版本以及是否需要向后兼容旧系统。用户可能不了解这些选项的含义,需要简单解释,或者建议使用默认值。 在安装完成后,可能需要指导用户如何验证安装是否成功,比如检查DNS记录、测试用户登录、创建测试用户和组等。这些步骤能帮助用户确认控制器是否正常工作。 还需要注意一些常见错误,比如计算机名称是否符合要求,网络连接是否正常,是否有足够的权限(比如使用管理员账户操作),以及系统是否有未完成的更新需要安装。这些都可能影响控制器的安装过程。 此外,用户可能关心后续步骤,比如如何将客户端计算机加入,如何管理用户和组,如何配置组策略等。虽然问题主要是安装服务器,但提供一些后续操作的简要说明可能对用户有帮助。 最后,需要确保回答结构清晰,分步骤说明,语言简洁,符合中文表达习惯,同时遵循用户提供的系统级指令,比如正确使用LaTeX格式,但在这个问题中可能数学公式较少,但如果有需要的地方要正确应用。例如,在提到IP地址时,可能需要使用行内公式格式,如IP地址配置为$192.168.1.10$,但通常IP地址可能不需要公式,这里需要判断是否符合要求。或者如果有示例命令,可能需要用代码块,但根据用户的要求,是否允许使用代码块?用户要求使用中文回答,结构清晰,但系统级指令中提到行内数学表达式使用$...$,独立公式用$$...$$,所以如果有需要的话,比如示例中的命令参数可能需要用代码格式,但用户可能没有特别说明,可能需要用其他方式表示。不过通常,在技术指导中,代码或命令可以用代码块或引号标注,但根据用户的系统指令,可能需要避免使用Markdown格式,所以可能需要用文字描述命令,比如“输入命令 Install-WindowsFeature AD-Domain-Services 并执行”。 总结一下,回答应该分为以下几个部分: 1. 准备工作:系统要求、静态IP、更新系统 2. 安装AD DS角色 3. 提升为控制器:配置新林或加入现有 4. 配置DNS和其他设置 5. 完成安装后的验证 6. 常见问题及解决方法 7. 后续步骤(可选) 需要确保每个步骤详细但不过于复杂,适合新手跟随操作。同时,提醒用户注意备份数据,因为安装控制器会改变服务器的角色,可能导致现有配置变化。</think>安装服务器(控制器)是搭建Windows网络环境的核心步骤,用于集中管理用户、计算机和资源。以下是详细步骤: --- ### **一、准备工作** 1. **系统要求** - 操作系统:Windows Server 2016/2019/2022(建议最新版本)。 - 硬件:至少2核CPU、4GB内存(推荐8GB+)、40GB存储空间。 - 网络:静态IP地址(例如:$192.168.1.10$),确保DNS指向自身或可用DNS服务器。 2. **配置静态IP** - 打开 **控制面板 > 网络和共享中心 > 更改适配器设置**。 - 右键网卡 → **属性** → 选择 **IPv4** → 手动输入IP、子网掩码、默认网关。 - 设置首选DNS为自身IP(若本机将托管DNS)或现有DNS服务器。 3. **更新系统** - 安装最新系统更新,重启服务器。 --- ### **二、安装Active Directory服务(AD DS)** 1. **通过服务器管理器安装** - 打开 **服务器管理器** → **添加角色和功能**。 - 选择 **基于角色或基于功能的安装** → 勾选 **Active Directory服务**。 - 确认安装,完成后点击 **将此服务器提升为控制器**。 2. **通过PowerShell安装(可选)** ```powershell Install-WindowsFeature AD-Domain-Services -IncludeManagementTools ``` --- ### **三、提升为控制器** 1. **启动AD DS配置向导** - 在服务器管理器中,点击通知栏的 **黄色感叹号** → **提升为控制器**。 2. **部署配置** - **选择部署操作**: - **添加新林**:首次安装时创建新(例如:`example.com`)。 - **现有**:加入已存在的(需提供管理员凭据)。 - 输入名(如:`example.com`)。 3. **设置控制器选项** - **林功能级别**:根据网络中最低Windows Server版本选择(默认最新)。 - 勾选 **DNS服务器**(自动安装DNS角色)和 **全局编录**。 - 设置 **目录服务还原模式(DSRM)** 密码。 4. **DNS配置** - 若提示“DNS委派警告”,可忽略(确保DNS服务已正确安装)。 5. **路径设置** - 指定数据库、日志文件和SYSVOL的存储路径(默认即可)。 6. **完成安装** - 检查配置摘要 → 点击 **安装** → 系统自动重启。 --- ### **四、验证安装** 1. **基础检查** - 打开 **开始菜单** → 确认出现 **Active Directory用户和计算机** 工具。 - 检查DNS管理器是否生成`_msdcs.example.com`等记录。 2. **测试用户与组** - 创建测试用户:打开 **AD用户和计算机** → 右键 → **新建用户**。 - 创建OU(组织单位)或安全组,验证权限分配。 3. **客户端加入** - 在客户端计算机的 **系统属性** 中,输入名(如`example.com`)并输入管理员凭据。 --- ### **五、常见问题** 1. **DNS解析失败** - 确保控制器的DNS指向自身(若托管DNS)。 - 检查防火墙是否允许DNS(UDP 53)和AD通信端口(如TCP 88、389)。 2. **错误“无法联系”** - 确认网络连通性,检查IP和DNS配置。 - 确保时间同步(内计算机时间差需小于5分钟)。 3. **SYSVOL共享丢失** - 使用命令 `net share` 检查共享状态,或通过 **DFS管理工具** 修复。 --- ### **六、后续管理建议** 1. **定期备份** - 使用 **Windows Server Backup** 或第三方工具备份系统状态和AD数据库。 2. **组策略配置** - 通过 **组策略管理编辑器(GPMC)** 统一管理用户策略。 3. **监控与维护** - 使用 **事件查看器** 监控AD相关日志(如`Directory Service`)。 --- 按照以上步骤操作,即可完成服务器的安装和基本配置。建议在测试环境中先行演练,避免影响生产网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值