2009-08-29 9 views
-1

私が作ったプログラムからプログラムを起動すると言う。 Windowsディレクトリが別の場所にあると思って、起動したプログラムを騙すことは可能ですか?Cでのトリッキーなプログラム

+1

「Windows Directroy」と「Portable application」?それは間違っている。そして、それはC.とは何の関係もありません。 – Arkadiy

+1

私はCでそれをプログラミングするつもりです。私はアプリを移植可能にするという目的でそれをやっています。 – sobertillnoon

+0

あなたが何を記述するかは、ソフトウェア開発者が一般的に使用する用語である「ポータブル」のほんの一部です:さまざまなオペレーティングシステムやプロセッサアーキテクチャでコンパイルして実行できるコードです。 "windowsディレクトリ"のようなものがあると仮定すると、Windows上での実行を制限してしまいます。 –

答えて

1

難しいでしょう。プログラムがWindowsディレクトリのパスを決定するために使用しているシステムAPIがいくつかあります。それをトリックするには、プログラムの呼び出しをそれがどちらのAPIに傍受して別の結果を返す必要があります。

WindowsでAPIをインターセプトする方法については、多くの記事があります.Googleで初めて見つけたのはAPI hooking revealedです。

0

Windowsディレクトリの場所はレジストリにあります。 Vistaでは、ユーザーごとに変更することができますが、私が知る限り、プロセスごとに行うことは不可能です。

2

%windir%または%systemroot%の環境変数を使用してWindowsディレクトリを判断する場合は、これらを変更するのは簡単です。しかし、API呼び出しを使用する場合は、その呼び出しをフックする必要があります(ChrisW suggests)。 Detoursをご覧ください。

2

windowsディレクトリの場所を偽装するのは一般的には行われていません。私自身の反応は上記のものと似ています。それが可能であれば、その災害のレシピです。

あなたの状況を詳細に説明できる場合(新しい質問の可能性があります)、あなたの実際の根本的な問題を解決するためのより良い提案があるかもしれません。