我正在尝试获取目录C:\ Users \ guest \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles中的所有文件夹名称。堆栈溢出时有很多可用的链接。我尝试了这些链接,并在链接上给出了建议 以下是我的代码。
$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections'
$data = (Get-ItemProperty -Path $key -Name DefaultConnectionSettings).DefaultConnectionSettings
if($data[8] -eq 11)
{
$data[8] = 3
Set-ItemProperty -Path $key -Name DefaultConnectionSettings -Value $data
}
elseif ($data[8] -eq 3){
$data[8] = 11
Set-ItemProperty -Path $key -Name DefaultConnectionSettings -Value $data
}
fd.dwFileAttributes返回值0.并且代码无法找到文件夹名称。 我无法弄清楚我错过了什么导致了这个问题。 谢谢。
答案 0 :(得分:0)
您没有进行任何错误处理,并且您将错误的路径传递给ShellExecute()
。
尝试更像这样的东西:
#include <shlobj.h>
#include <shlwapi.h>
void GetAppDirectory()
{
WCHAR buffer[MAX_PATH] = {0};
if (!SHGetSpecialFolderPathW( NULL
, buffer
, CSIDL_APPDATA
, FALSE ))
return;
if (!PathAppend(buffer, L"Mozilla\\Firefox\\Profiles"))
return;
std::wcout << buffer << std::endl;
GetSubFolder(buffer);
}
void GetSubFolder(LPCWSTR wstrFolder)
{
WIN32_FIND_DATA fd = {0};
TCHAR buffer[MAX_PATH] = {0};
if (!PathCombine(buffer, wstrFolder, L"*"))
return;
HANDLE hFind = FindFirstFileEx(buffer, FindExInfoStandard, &fd, FindExSearchLimitToDirectories, NULL, 0);
if (hFind == NULL)
return;
do
{
if ((lstrcmpW(fd.cFileName, L".") == 0) || (lstrcmpW(fd.cFileName, L"..") == 0))
continue;
std::wcout << fd.cFileName << std::endl;
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (PathCombine(buffer, wstrFolder, fd.cFileName))
ShellExecute(NULL, L"explore", buffer, NULL, NULL, SW_SHOWDEFAULT);
}
}
while (FindNextFile(hFind, &fd));
FindClose(hFind);
}