• ベストアンサー

GetFolderPathの使い方

CreateProcessで、System32内のshutdown.exeを使用して、シャットダウンするかの選択をするプログラムをCで作りたいのですが、 Cドライブ以外にOSをインストールしている場合、 C:\WINDOWS\system32\shutdown.exe では起動できないので、 GetFolderPathでSystem32のパスを指定したいのですが、いまいちよくわかりません。 どなたか教えてください。 下は今のところのソースファイルです。 http://spiralray.rakusei.info/programsource/shutdown.cpp

質問者が選んだベストアンサー

  • ベストアンサー
  • kenji_aki
  • ベストアンサー率50% (29/58)
回答No.1

環境変数から取得したほうがいいのではないでしょうか? SystemRootにWINDOWSフォルダまでのパスが入ってますので、 TCHAR strSystemRoot[256]; TCHAR strShutdownPath[MAX_PATH]; GetEnvironmentVariable(TEXT"SystemRoot", strSystemRoot, sizeof(TCHAR)*256); wsprintf(strShutdownPath, TEXT("%s\\%s"), strSystemRoot, TEXT("\\system32\\shutdown.exe")); こんな感じでしょうか?

kaede0501
質問者

お礼

できました! ありがとうございました。 これからもプログラムがんばります!

関連するQ&A

  • WINDOWSコマンドの名前を変更できる?

    WINDOWSコマンドの名前を変更できるのでしょうか? 例えば シャットダウンコマンドであれば 「shutdown」ですが 「shutdown_pc001(マシン名等)」に変更し マシン名等を記入しなければ コマンドが実行出来ないようにできるのでしょうか? ※この時「shutdown」だけでは実行出来ないようにしたいです。 ▼やってみたこと(OSはXP) c:\windows\system32\shutdown.exe ↓名前変更 c:\windows\system32\shutdown_xx.exe コマンドプロンプトで shutdown_xx.exe にて認識。 しかし、 shutdown.exe でも認識するのです。 おかしいなと思いファイルを調べてみると名前を書換えて存在しないはずの shutdown.exeが勝手に出来上がるようすです。 shutdown.exeファイルが生成されなければ問題解決なのですが。。。 コマンドにお詳しい方ご教示お願いいたします。

  • Vistaでスリープアイコン

    Vistaでスリープで終了するのが便利で常用しています。 どなたかshutdown.exe のパラメータをご存知ではないでしょうか? シャットダウンのパラメータはC:\Windows\System32\shutdown.exe -s -f -t 0を使っています。

  • ウインドウズフォルダにまつわる事

    VB2008でWindowsXP上でINIファイルの読み書きを行うプログラムを作っています。 VB.NETで特殊フォルダを取得したいのですが、以下の場合、 C:\Windows\System32となるのですが、C:\Windowsのようにウインドウズフォルダを返す方法はありますか? ' System ディレクトリ MessageBox.Show(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)) あとiniファイルをパスなしで作成するとC:\Windowsに作られるのですが デフォルトでそうなっているのでしょうか? WritePrivateProfileString("キーワード", "項目", 値, "test.ini") exeのあるカレントにiniファイルを作成したい場合などパスを求める方法等も知りたいです。

  • XPを使用しています。

    XPを使用しています。 以下の作業を自動化したいのですが、シャットダウンがうまくいきません。 (1) スタンバイ状態 (2)タスクにて特定の時間にあるプログラムを実行 (3)タスクにて特定の時間にシャットダウンコマンドを実行 (2)まではうまくいくのですがシャットダウンされません。 シャットダウンはbatにて以下のコマンドを実行しています。 C:\WINDOWS\system32\shutdown.exe -f 「タスクの実行時にスリープを解除する」にチェックを入れています。 どなたか教えてください。 宜しくお願い致します。

  • 「プログラムとファイルの検索」ではフルパスが必要?

    Windows7 Home Premium SP1 64bit 次のプログラムはどちらも同じフォルダにあります。 C:\Windows\System32\cmd.exe C:\Windows\System32\control.exe 「プログラムとファイルの検索」からシステムプログラムを検索する際、 cmd.exe は "cmd.exe"だけでヒットするのに、 control.exe はフルパスを付けないとヒットしないのは何故でしょうか?

  • C&C++から*.exeを呼ぶ方法の種類について

    C&C++から*.exeを呼ぶ方法として 私は今まで 1)CreateProcessを用いる方法 具体例は以下 ret = CreateProcess(NULL, "\"c:\\WINDOWS\\system32\\notepad.exe\" \"c:\\test.txt\"", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); でよんでいたのですが他に 方法はありますか??? あればできれば具体的に例でいいので簡単な ソースコード(API)をおしえてくださいm(___)m よろしくおねがいします。

  • 「shutdown」のショートカットアイコン

    Windows8.1です。 以前に、偶然に見かけたインターネットのある記事にひかれて、紹介されているやり方でデスクトップ画面に、シャットダウンのショートカットアイコンを作りました。作り方は、定かではありませんが、その記事に提供されている指令?をコピペしただけで簡単にできた印象があります。できたアイコンはただの「shutdown」という名前だけであり、拡張子は付いていない(他のファイルは拡張子が表示されている)。しかしそのときからは、何の気もせずにずっと使ってきました。 最近、ある記事で、シャットダウンのショートカットアイコンは「shutdown.exe」であるはずという印象を受けたもので、もしかしたら当時作った「shutdown」という名前のアイコンは木馬プログラムではないかと心配になってきました。 ちなみに、いま、この「shutdown」アイコンのプロパティには、 ファイルの種類:ショートカット(.lnk) リンク先:C:\Windows\System32\shutdown.exe /s /t 00 、と表示されています。 私が作ったこのアイコンは木馬ですか?今の使っているウイルスチェックソフトでは、なんの問題も検出されません。安全性を確かめるにはどうすればいいですか?ご教示お願いいたします。

  • CreateFile が ERROR_PATH_NOT_FOUND のエラーになる

    VC++を使っています。OSは Windows2000 です。 CreateFile で指定するファイル名をフルパスで指定し、EXEを同じ ディレクトリに置いて実行したところエラーとなり、詳細コードが ERROR_PATH_NOT_FOUND でした。 プログラムは以下のようになっています。 #define AAA "c:winnt\\system32\\AAA.log" hOpen = CreateFile( AAA, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 上記プログラムの AAA.exe を system32下に置いて実行すると、 パスが不正だと怒られてしまいます。。。 AAA.exe を別ディレクトリで実行すると、sysytem32下にちゃんと ファイルが作成されます。 AAA.exe を CreateProcess する BBB.exe を造って試しましたが、 やはり BBB.exe が system32下にあると駄目でした。 どうやらカレントディレクトリが同じだと駄目みたいです。 「"AAA.log"」とせずにフルパスとしているのは以下の理由のためです。 ・ファイルは必ず system32下に作成したい。 ・AAA.exe は必ず system32下にある。 しかし、BBB.exe が必ず system32下にあるとは限らないため、 「"AAA.log"」とした場合、BBB.exe を実行したディレクトリに 作成されてしまう。 CreateFile には今回のような制限があるのでしょうか??? #ヘルプを見る限り、書いてないです。。。

  • コマンドプロンプトについて詳しい方 2

    コマンドプロンプトについて詳しい方 下記サイト URLに少し下がったあたりに https://mebee.info/2020/04/17/post-9589/ で少し下がると Apacheインストール 「コマンドプロンプトを管理者として実行します。」とあり、やり方が書いてあるのですが、 自分のコマンドプロンプトを管理者として起動させた直後のカレントディレクトリは「C:¥windows¥system32」となっているのですが、この画面にURLにあったコード以下のように入力したのですが、 付属画像のように cd C:\Apache24\bin とhttpd.exe -k installをそのまま入力してのですが、「指定されたパスが見つかりません。」と出てしまいます。 自分のコマンドプロンプトにあ書いてある C:¥windows¥system32を消して、 cd C:\Apache24\bin とhttpd.exe -k installをそのまま入力するということでしょうか? C:¥windows¥system32が消そうとしても消えません。何かやり方が間違っているのでしょうか? ちなみにCドライブ内にはちゃんとファイルは保存してあります。

  • HijackThisとアンインストール情報

    Hijackthisはソフトのスキャンで何かあれば検出されるものを自分自身で行うのですか。アンインストール情報はアプリケーションの削除のデータですか? Running processes: C:\WINDOWS\System32\smss.exe C:\WINDOWS\system32\winlogon.exe C:\WINDOWS\system32\services.exe C:\WINDOWS\system32\lsass.exe C:\WINDOWS\system32\svchost.exe C:\Program Files\Windows Defender\MsMpEng.exe C:\WINDOWS\System32\svchost.exe C:\WINDOWS\Explorer.EXE C:\WINDOWS\system32\spoolsv.exe C:\WINDOWS\system32\Atiptaxx.exe C:\WINDOWS\LTSMMSG.exe C:\Program Files\Fujitsu\IndicatorUtility\IndicatorUty.exe C:\Program Files\Apoint2K\Apoint.exe C:\Program Files\Windows Defender\MSASCui.exe C:\Program Files\McAfee\MSK\MskAgent.exe C:\WINDOWS\system32\ctfmon.exe C:\PROGRA~1\McAfee\MSC\McLogCln.exe C:\WINDOWS\system32\conime.exe C:\Program Files\MSN Messenger\MsnMsgr.Exe C:\Program Files\DI\HatchInside\hatchinside.exe C:\WINDOWS\system32\RAMASST.exe C:\WINDOWS\System32\ati2evxx.exe C:\Program Files\Apoint2K\Apntex.exe C:\WINDOWS\system32\DVDRAMSV.exe C:\Program Files\Common Files\McAfee\HackerWatch\HWAPI.exe C