gpt4 book ai didi

c# - 如何使用 C# 代码从 64 位机器上的 64 位应用程序获取 32 位应用程序数据文件夹

转载 作者:可可西里 更新时间:2023-11-01 14:18:09 27 4
gpt4 key购买 nike

我遇到了一个很奇怪的问题:

我在 64 位 Windows Server 2008 R2 机器上获得了一个 64 位 c#.net 应用程序,它被 Windows 服务调用并在本地系统用户下启动,此外,这个 64 位 c#.net 应用程序启动 32 位java 应用程序,此 java 应用程序的应用程序数据文件夹位于 C:\Windows\SysWOW64\config\systemprofile\AppData。 64 位 c#.net 应用程序将应用程序数据文件夹保存到 C:\Windows\System32\config\systemprofile\AppData

所以对于 32 位应用程序应用程序数据文件夹是(在本地系统用户的情况下):-C:\Windows\SysWOW64\config\systemprofile\AppData

对于 64 位应用程序应用程序数据文件夹是(在本地系统用户的情况下):-C:\Windows\System32\config\systemprofile\AppData

请注意:这不是打字错误,它们指的是相反的文件夹(这是微软针对 64 位操作系统的决定),您可以阅读 https://msdn.microsoft.com/en-us/library/aa384187.aspx以获得详细解释。

现在,我需要将一些文件从 64 位应用程序写入 32 位应用程序数据文件夹,因为这些文件将被 32 位 java 应用程序使用。

所以,我需要知道如何使用 c#.net 从 64 位应用程序获取 32 位应用程序数据文件夹。

重要说明:当应用程序在本地系统用户下启动时会面临这个问题(即应用程序已通过窗口服务启动)并且当用户明确启动应用程序时不会有任何问题,因为在此在这种情况下,64 位和 32 位应用程序的用户应用程序数据文件夹将相同。

最佳答案

您首先检查您是否确实在 64 位操作系统上的 64 位进程中运行。如果是这样,您自己构建路径。否则,您可以只检索系统路径并附加您的目标路径。

String path;
//detect if the current application is 64 bit and running on a 64 bit system
//NOTE: needs .NET Framework 4 to work
if (Environment.Is64BitOperatingSystem && Environment.Is64BitProcess)
{
path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "SysWOW64");
}
else
{
path = Environment.GetFolderPath(Environment.SpecialFolder.System);
}
//append your target path
path = Path.Combine(path, @"config\systemprofile\AppData");

请注意,使用 EnvironmentIs64BitOperatingSystemEnvironment.Is64BitProcess 至少需要 .NET-Framework 4。

关于c# - 如何使用 C# 代码从 64 位机器上的 64 位应用程序获取 32 位应用程序数据文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com