gksj 发表于 2022-9-7 13:05

C# Process..MainModule.FileName 长短文件名的问题

编译环境:VS2013,.NET4.5
目标进程绝对路径:D:\Program Files\Tencent\QQGame\MiniGames\Tetris\Tetris.exe
源码:
internal static void Chk检测游戏进程()
      {
            Process[] ps = Process.GetProcessesByName("Tetris");
            if (ps.Length > 0)
            {
                ExePath = ps.MainModule.FileName   ;
            }
      }
      internal static DateTime LastStartTime = DateTime.MinValue;
      internal static string ExePath = string.Empty;
      internal static string ExeTitle = string.Empty;

当我在编译程序的电脑中获取到的ExePath字符串为:“D:\Program Files\Tencent\QQGame\MiniGames\Tetris\Tetris.exe”
但是在其他电脑中获取到的路径就变成了“D:\PROGRA~1\Tencent\QQGame\MINIGA~1\Tetris\Tetris.exe”

我想问的是能不能让他强制获取长文件名(禁止~1的短文件名出现)
这个是系统环境变量的问题还是NET的问题?

如果实在是没有办法我想尝试用
static extern uint GetLongPathName(string shortname, StringBuilder longnamebuff, uint buffersize);
来处理。
页: [1]
查看完整版本: C# Process..MainModule.FileName 长短文件名的问题