bugfix> java > 投稿

私は Kernel32.Instance.CreateProcess に電話しています切り離されたプロセスを開始します。私が直面している問題の1つは、環境ブロックを CreateProcess に渡すことです私が行うたびにプロセスは開始されません。

私が最初に使用した

Advapi32Util.getEnvironmentBlock(environment)

ブロックを作成してからポインターを作成します( CreateProcess が必要) (私は使用しました:

public static Pointer asPointer(String string) {
    byte[] data;
    try {
        data = Native.toByteArray(string, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        throw new RuntimeException(e);
    }
    Pointer pointer = new Memory(data.length + 1);
    pointer.write(0, data, 0, data.length);
    pointer.setByte(data.length, (byte) 0);
    return pointer;
}

その結果、最後にダブルヌルが必要になると思います。実際にCREATE_UNICODE_ENVIRONMENTを設定したので、 Memory の最後に2つの余分なnullを追加しようとしました 。それでも CreateProcess になりましたfalseを返し、コマンドを開始しません。

何が間違っているのか理解できません。問題を示唆する可能性のあるログファイルを確認する必要がありますか?