• ベストアンサー

スタートアップフォルダのパスの取得

環境はWIN98 VC++6.0 MFCです。 スタートアップフォルダのパスを取得するために以下のようにしました。 XPではうまくいきましたが、WIN98では取得できません。 どうすれば取得できますか? char chPath[MAX_PATH]; LPITEMIDLIST pidl; ::SHGetSpecialFolderLocation( GetSafeHwnd(), CSIDL_COMMON_STARTUP, &pidl ); ::SHGetPathFromIDList( pidl, chPath );

  • mk1234
  • お礼率94% (1832/1940)

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ユーザごとに別の環境を作っていないならこっち。 CSIDL_STARTUP #ユーザごとの環境を作ってるならWin98でもそのソースで取れるはずです。

mk1234
質問者

お礼

回答ありがとうございます。 SHGetSpecialFolderPath( NULL, chPath,CSIDL_STARTUP, FALSE ); で出来ました。

関連するQ&A

  • フォルダ名とパスの違うフォルダの作り方

    例えばvistaなどで、 ドキュメント は名前はドキュメントですがパスは Documents です。 このようなフォルダはどうやって作成するのでしょうか。 他には、プログラム(Program)、スタートアップ(startup) などのようなフォルダです。

  • システムの特殊なフォルダのパス名の取得を取得しようとしています。

    システムの特殊なフォルダのパス名の取得を取得しようとしています。 VC++2008 Express EditionでSHGetSpecialFolderPathをつかって パスを取ってみようとネット上の例だから拝借して 下記のようなソースを書いてみたのですが、 出てくる結果が、どの場所のパスをとっても「C」しか出てこないのです。 これってなにが原因なのでしょうか? どなたかお教え願えないでしょうか? [ソース] #include<stdio.h> #include<shlobj.h> int main(){ TCHAR buf[_MAX_PATH]; SHGetSpecialFolderPath(NULL, buf, CSIDL_DESKTOPDIRECTORY, FALSE); printf("デスクトップのパスは %s です\n",buf); return 0x00; }

  • スタートアップに登録用のフォルダは複数ある?

    スタートアップに登録用のフォルダは複数ありますか? スタートアップフォルダに登録しているアプリと、実際に登録されてるアプリの比較図(添付写真)をご覧ください。(画像がアップロードできないので省略) クロックランチャーの方のCLauch(デスクトップ整理型の同名アプリもあり)をスタートアップに登録させたくて、以下のサイトを参考に登録しました。 https://pc-karuma.net/windows-10-app-startup/ https://freesoft.tvbok.com/win10/operation/shell_startup_folder.html 場所その1 C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup または %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 場所その2 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup ※補足注意 「場所その2」は全ユーザー共通のフォルダです。通常は「場所その1」を利用します。 https://pc-chain.com/windows10-app-startup-path/6249/ そこで気づきました。 以前「スタートアップに身に覚えのないアプリが登録されていて何のアプリか分からない」ままで、オフにすることでほったらかしにしているものの正体が、上記のフォルダ内を確認すれば分かるのではないかということに。 で、確認した結果が添付写真の通り。(写真はアップロード出来ませんでした。) 上記に記載の、場所その1(上部)に登録されてたものは、アプリの9つ中3つのアプリしか、フォルダ内にありません。(下部に記載の場所は見つからなかったです。) 場所その2のフォルダ内には、なにもありませんでした。 どういうことでしょうか? スタートアップに登録されているアプリのショートカットは、全部このフォルダにあるんじゃないんでしょうか? 他にもスタートアップ関連のフォルダがあるってことですか??? C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ ↑ ここに入っていればいいのでしょうか? ここにはスタートアップ上には無いアプリもあります。 上記のプログラムまでにしろ、下記のスタートアップまでにしろ、 C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 設定内やタスクマネージャー上から確認できるスタートアップアプリ数と、それらがあるとされているフォルダ内にあるアプリの、数に違いがあり困惑です。 利用環境 dynabook T95/NG Windows10 Home 1903 64bit よろしくお願いいたします。

  • 特殊フォルダのパスを取得

    ボタンを押すとエクスプローラでフォルダを開くという処理をしたいのですが、一部のフォルダのパスが分からず困っています。 開けないフォルダはMyComputer、コントロールパネル、ごみ箱などの仮想フォルダと呼ばれるフォルダです。 これらのフォルダにはSHGetSpecialFolderPath関数も通用しません。 どのようにすれば望みどおりの処理を実装できるのでしょうか? どなたかご教授お願いします。 <環境> Windows Vista VC++ Express Edition

  • Active Basic フォルダの絶対パスの取得

    ファイルまでの絶対パスの取得のように、自分のフォルダまでのパスを取得するにはどうしたらいいのでしょうか? D:\aaaa\bbbb\cccc\dddd\abcd.exe があって、 D:\aaaa\bbbb\cccc\dddd\ を取得したいのですが・・・ 実験してみたのですが、上手くいきませんでした。 すみませんが、やり方をご教授ください。お願いします。 ↓頑張った証 '自分自身のファイルパスを取得する Dim path[MAX_PATH] As Byte Dim FileName As BytePtr Dim MaxFilePath As Long Dim MyFileName As Long Dim AllByte As Long Dim MidAns As String GetModuleFileName(NULL,path,MAX_PATH) 'ファイルパスからファイル名を抜き出し、その大きさを取得して、引く FileName=malloc(Len(path)+1) GetFileTitle(path,FileName,Len(path)+1) MaxFilePath=Len(path) MyFileName=Len(FileName)+1 AllByte=MaxFilePath-MyFileName 'フォルダまでのパスを抜き出す MidAns=Mid$(path,1,54) free(FileName)

  • パスから最後のディレクトリだけを取得したいです

    【環境】WindowsXP、VC++2005(MFC) タイトルの通りなんですが、例えば 「D:\10_test\hoge\sample」というディレクトリのパスから 「sample」だけを取得したいのですが、どうすれば出来ますでしょうか? ご教授お願いいたしますm(__)m

  • 共有フォルダ名のパスの取得

    お世話になります。 C++ 6.0 MFCで開発しております。 自分の共有フォルダ名から、その共有フォルダのパスを取得したいのですが それができるような関数はあるのでしょうか? 大変お手数ですが、何卒よろしくお願いします。

  • フォルダの作成日の取得方法を教えてください

    フォルダーの作成日を取得するような関数か技法を探しています。 いろいろなサイトを探していますが見つかりません。 ご存知の方、ご教授願えないでしょうか。 よろしくお願いします。 ********************** 開発環境 WinXP SP2 VC++ 6.0 MFC ********************** (ファイル関連ならたくさんあるのに・・フォルダない・・)

  • ウィンドウズ10のパスが日本語?

    ウィンドウズのスタートアップとかのパスの場所をしらべると ▼スタートアップフォルダの場所は以下の通りです C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup このように書いてあるのですが(他のパスでもそうなのですが) 自分のpcをみるwindowsのあとカタカナでスタートメニューや プログラム スタートアップ など 書いてあります このためコピペができません なんで 日本語だったりスルのでしょうか?

  • スタートアップに登録したプログラムが2個起動する

    何かの拍子に、 Documents and Settings\[ユーザー名]\スタート メニュー\プログラム\スタートアップ を削除してしまいました。 私しか使わないPCなのでとりあえず C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ に同じスタートアップ用のショートカットを改めて作ったところ、 起動時にショートカットに入れたプログラムが2個起動するようになってしまいました。 msconfig(システム構成ユーティリティ)のスタートアップを確認すると 登録したプログラムが[Common Startup]と[Startup]の2つが存在しています。 コレが原因かと思い[Common Startup]と[Startup]のどちらかのチェックを外してみたのですが、 そうするともう片方も消え、結果として起動時にスタートアップしなくなってしまいます。 また、ユーザーフォルダに\スタート メニュー\プログラム\スタートアップを作成し、 All Usersのスタートアップから全て移動させてみるとスタートアップとして登録されなくなってしまいました。 以上をふまえて下記のどちらか、または両方の対策が出来ないでしょうか? ご意見、アドバイス待っています。 ●ユーザーフォルダのスタートアップを再度使えるようにする ●All Usersのスタートアップに登録しても2個起動しないようにする なお、スタートアップ登録プログラムが2個起動したところで、現状では致命的な問題があるわけではありません。 しかし多重起動を禁止しているプログラムが起動の度に警告を出したり、 バックアップソフトが二個起動して二重にバックアップを取ろうとするので少々困っています。 なお、会社支給の業務用PCなのでおいそれとリカバリなどは出来ません。