如何使用带有参数的 CreateProcessAsUser 是日语?
How to use CreateProcessAsUser with argument is japanese?
我编写 windows 服务来启动具有指定路径的应用程序并发送一个文件名作为其参数。 => 我在 C#
代码上使用 CreateProcessAsUser
:
如果文件名来自a,b,c...z字符=>成功
如果文件名是日文 => 申请时得到的文件名不正确
P/S: 我调试了 windows 服务: 传递给 CreateProcessAsUser
的文件名是正确的,但在应用程序时是不正确的。
问:日文文件名如何正确获取?
更新:使用CreateProcessAsUserW()
[DllImport("advapi32.dll", EntryPoint = "CreateProcessAsUserW", SetLastError = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public extern static bool CreateProcessAsUserW(IntPtr hToken, String lpApplicationName, String lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes,
ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandle, int dwCreationFlags, IntPtr lpEnvironment,
String lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation);
在所有结构和CreateProcessAsUser
例程中使用CharSet = CharSet.Unicode
我编写 windows 服务来启动具有指定路径的应用程序并发送一个文件名作为其参数。 => 我在 C#
代码上使用 CreateProcessAsUser
:
如果文件名来自a,b,c...z字符=>成功
如果文件名是日文 => 申请时得到的文件名不正确
P/S: 我调试了 windows 服务: 传递给 CreateProcessAsUser
的文件名是正确的,但在应用程序时是不正确的。
问:日文文件名如何正确获取?
更新:使用CreateProcessAsUserW()
[DllImport("advapi32.dll", EntryPoint = "CreateProcessAsUserW", SetLastError = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public extern static bool CreateProcessAsUserW(IntPtr hToken, String lpApplicationName, String lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes,
ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandle, int dwCreationFlags, IntPtr lpEnvironment,
String lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation);
在所有结构和CreateProcessAsUser
例程中使用CharSet = CharSet.Unicode