Silent Dropbox fjerning

stemmer
0

Jeg bruker følgende skript i Npackd å avinstallere Dropbox. Det fungerer på XP og Vista, men mislykkes på Windows 7/64. I stedet for å vise den linjen (den som er normalt på bunnen av skjermen) den viser et Windows Explorer med innholdet av C: /. Dette er ikke relatert droppboks som å fjerne andre pakker med DLL basert grensesnittilleggene viser også den samme virkning.

Uninstall.exe /S _?=%CD%
taskkill /f /fi IMAGENAME eq explorer.exe
del DropboxExt.13.dll
del DropboxExt64.13.dll
rem start explorer from the root directory so it does not lock this one
start  /D\ explorer.exe

Hva er galt med manuset? Hvordan kan det bli endret for å fungere riktig i Windows 7 også?

Takk

EDIT: Jeg er virkelig lei av dette problemet. Følgende batch-fil fungerer enten som startet som en vanlig bruker eller As Administrator:

taskkill /f /fi IMAGENAME eq explorer.exe
ping -n 5 127.0.0.1
pushd \
rem runas /trustlevel:0x20000 
start  /D\ explorer.exe
popd

Her er koden som starter .bat fra mitt program (path = uninstall.bat, bare to nye miljøvariabler er definert):

QDir d = this->getDirectory();
QProcess p(0);
p.setProcessChannelMode(QProcess::MergedChannels);
QStringList params;
p.setWorkingDirectory(d.absolutePath());
QString exe = d.absolutePath() + \\ + path;
for (int i = 0; i < env.count(); i += 2) {
    p.processEnvironment().insert(env.at(i), env.at(i + 1));
}
p.start(exe, params);

Den tilsvarende kode i Qt / qprocess_win.cpp:

DWORD dwCreationFlags = CREATE_NO_WINDOW;
dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT;
STARTUPINFOW startupInfo = { sizeof( STARTUPINFO ), 0, 0, 0,
                             (ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT,
                             (ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT,
                             0, 0, 0,
                             STARTF_USESTDHANDLES,
                             0, 0, 0,
                             stdinChannel.pipe[0], stdoutChannel.pipe[1], stderrChannel.pipe[1]
};
success = CreateProcess(0, (wchar_t*)args.utf16(),
                        0, 0, TRUE, dwCreationFlags,
                        environment.isEmpty() ? 0 : envlist.data(),
                        workingDirectory.isEmpty() ? 0 : (wchar_t*)QDir::toNativeSeparators(workingDirectory).utf16(),
                        &startupInfo, pid);

Hvorfor Explorer tror det er allerede et oppgavelinjen?

EDIT2: Jeg vet hva som er galt nå. Etter at Explorer er drept en ny startes automatisk ved en svchost.exe prosess med de følgende parametere: / fabrikk, {682159d9-c321-47ca-b3f1-30e36b2ec8b9}. GUID er for DesktopExplorerFactory. Dette er sannsynligvis en krasj-beskyttelse for et COM-tjenesten. Mine samtaler til explorer.exe ikke starte en ny Explorer som det er allerede en. Etter et minutt eller to denne prosessen vil være automatisk stengt hvis ingen vinduer er åpne. Så jeg tror Ben Voigt er riktig og Det er egentlig ingen god måte å losse skallet helt uten å logge av alle brukere.

Publisert på 18/12/2010 klokken 12:11
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Hva er galt med manuset er ganske enkel: Skallet er lastet inn i mange mange programmer i tillegg bare Windows Explorer. Hvert program som bruker vanlig åpne / lagre fildialoger vert skallet.

For å møte din umiddelbare spørsmålet om hvordan å kontrollere arbeidsmappen i Windows Utforsker uten å passere argumenter som åpner et vindu, bare sette arbeidsmappen:

pushd C:\
start explorer.exe
popd

Men dette fortsatt ikke vil la deg sikkert slette forlengelse. Det er egentlig ingen god måte å losse skallet helt uten å logge av alle brukere.

EDIT: Er skriptet kjøres på samme integritetsnivå som den opprinnelige explorer.exe du drept? Samme høyde nivå? Skallet kjører med medium (normal) integritetsnivå og unelevated token, må du matche dette.

Svarte 20/12/2010 kl. 14:05
kilden bruker

stemmer
1

For hva det er verdt, kommandoen "start '' / d \ explorer.exe" synes å fungere fint for meg selv på win7, det starter oppgavelinjen og skrivebordet om det er blitt drept.

Men trenger du egentlig ikke trenger "start". Du kan bare ringe "explorer.exe" fra en batch fil, vil den ikke blokkeres. Ikke sikker på om dette gjør en forskjell, men det er verdt et forsøk.

Forresten, hvis det ikke fungerer ... hva som skjer på den berørte datamaskinen hvis du tar opp oppgavebehandling med ctrl + shift + esc og gjøre en Fil-> Kjør "explorer"? Betyr det starte oppgavelinjen eller vil det igjen, produsere en explorer vinduet? Hvis dette gir de forventede resultater kan det være noe galt med batch fil eller omgivelsene. Slike som ikke blir drevet som den påloggede brukeren, etc.

Explorer bør starte oppgavelinjen hvis det ikke finnes andre forekomster av sin egen prosess rundt. Det faktum at skallet selv kan lastes inn i andre prosesser spiller ingen rolle ... du kan drepe alle forekomster av explorer, har en "file open" dialogen opp i Excel, og fortsatt starte oppgavelinjen ved å kjøre explorer.exe fra oppgaven sjef.

Svarte 21/12/2010 kl. 22:55
kilden bruker

stemmer
1

Prøv å erstatte følgende linje

start "" /D\ explorer.exe

med dette en

start "" /D\ %SystemRoot%\explorer.exe

Dette bør kjøre explorer uten parametere.

Saken er at kjører explorer uten full sti går det med parametere du har angitt:

/factory,{682159d9-c321-47ca-b3f1-30e36b2ec8b9}

men jeg har ingen anelse hvorfor dette skjer.

Svarte 08/02/2013 kl. 16:10
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more