2016-06-15 12 views
0

いいえ、たとえばForm1.exe & console1.exeの2つのプロジェクトがあります。私はform1内でconsole1.exeを実行します。私は今、これに伴う問題は、ユーザーがローカルにそのファイルを保存する必要がありconsole1.exe実行するためには、今ではとの問題があるさ C#.exeを.dllにする/実行するか.dllを.exeのように実行するか

 if (isLogin(true)) 
     { 
      MessageBox.Show($"Welcome!"); 
      Process.Start("console1.exe"); 
を使用.EXE、そう、彼/彼女はコンソール1を実行することができます。 exeを実行せずにform1.exe

私はILMergeを使用して.exeをマージしましたが、現在はconsole1.exeを見つけることができないので、マージはうまくいきませんでした。

私の結論は、Visual Studio &を再度開き、console1.exeから.dllの参照を作成することでした。

.dllは、別のメソッドを呼び出さずに.exeを実行しているので、そのファイルを1つのメソッドと同じように実行するという問題があります。

基本的に親クラスを実行します。親クラスはサブクラスをフォローアップします。

ここで、console1.exeを参照してform1.exeにマージして、ユーザーがソロアプリケーションとして実行できないようにするか、console1.exeでルールを設定することができますform1.exe、または複数のサブクラスではなく、1つのコマンドで.dll参照ライブラリとして実行するという2つ目の結論です。

+0

あなたは.dllファイルとして第二のアプリケーションを実行することをお勧めします。 'Process.Start'はWindowsから起動するのと同じなので、呼び出し元アプリケーションを制限する本当の方法はありません。通常、.exeを.dllに変換するときは、.exeが使用するのと同じエントリポイントを使用していないので、エントリポイントの作成を心配するだけで、親アプリケーションから呼び出します。私はC#/ .NETでこれをやって以来、** long **時間だったので、コメントとして投稿してください。 – Thebluefish

+0

console1.exeを実行しないようにしようとしていますか?console1.exeへのアクセス権を持っていないようにしたいのですか(それについて知るために)、または実行するために手動で実行できないようにしようとしていますか?その内容?基本的には、誰かがconsole1.exeを実行しても、それを手動で実行しても何もしなかった場合、それでも問題はないでしょうか?それはちょうど開始し、停止した? – Mikanikal

+0

form1.exeで使用されていない状態で実行されないように –

答えて

0

プロセスとして開始する必要がある場合は、2つのオプションがあります。単純な難読化技法を使用しているため、どちらも愚かではありません。

  1. あなたはconsole1.notAnExeのようなものにconsole1.exeのファイルの拡張子を変更します。 Process.Start()メソッドを使用してアプリケーションとしてこれを開始することはできます。 ProcessStartInfoオブジェクトを作成し、UseShellExecuteプロパティをfalseに設定するだけで済みます。このオプションは、エクステンションを.exeに戻してアクセスできるユーザーが、アプリケーションを実行できることを意味するため注意してください。

    private static void StartAProcess(string proc) 
    { 
        var ps = new ProcessStartInfo(proc); 
    
        ps.UseShellExecute = false; 
    
        var p = Process.Start(ps); 
    
        p.WaitForExit(); 
    } 
    
  2. あなたのconsole1.exe内の簡単なテクニックを使用する特別なコマンドラインパラメータに読み込む方法Main(string[] args)を起動します。このコマンドラインパラメータが存在する場合は、処理を続行します。コマンドラインパラメータが存在しない場合は、ただ返します。コマンドラインパラメータを知っている人なら、あなたのconsole1.exeを起動して、そのコマンドラインパラメータをショートカット内で渡すことができるので注意してください。

    static void Main(string[] args) 
    { 
        if (args == null || 
         args.Length <= 0 || 
         !args[0].Equals(
          "/SpecialParameter", 
          StringComparison.OrdinalIgnoreCase)) 
        { 
         return; 
        } 
    
        // Do something if the /SpecialParameter exists..... 
    } 
    
    private static void StartAProcess(string proc) 
    { 
        var ps = new ProcessStartInfo(proc); 
    
        ps.UseShellExecute = false; 
        ps.Arguments = "/SpecialParameter"; 
    
        var p = Process.Start(ps); 
    
        p.WaitForExit(); 
    } 
    
関連する問題